System V提供的三种IPC进制,有异曲同工之妙。

semget

创建信号量结合

函数原型

  1. #include <sys/types.h>
  2. #include <sys/ipc.h>
  3. #include <sys/sem.h>
  4. int semget(key_t key, int nsems, int semflg);

参数

参数含义,与msgget类似,只是比它多了第二个参数。

  • key为ftok函数创建。
  • nsems为创建的信号量的个数,每个信号量以数组方式存储。
  • semflg用来标识信号量结合的权限。如0700。此外还可以附加以下ipc参数:
宏名 描述
IPC_CREAT 如果key不存在,则创建(类似open函数的O_CREAT)
IPC_EXCL 如果key存在,则返回失败(类似open函数的O_EXCL)
IPC_NOWAIT 如果需要等待,则直接返回错误