【发布时间】:2014-10-24 07:02:29
【问题描述】:
我们可以通过两种方式创建信号量。
1.
static unsigned int state = 1 ;
key_t h=ftok(".", state++);
int sem_id=semget(h, no_of_sems, IPC_CREAT|0666);
和
2.
int sem_id =semget(IPC_NEW,no_of_sems,0666|IPC_CREAT);
正如Linux手册http://man7.org/linux/man-pages/man2/shmget.2.html中提到的那样
IPC_PRIVATE 不是标志字段,而是 key_t 类型。如果这个特别 value 用于 key,系统调用忽略除最少之外的所有 显着 9 位 shmflg 并创建一个新的共享内存段。
我没有得到手册所说的内容。有人可以解释更多吗?
第一种方法比第二种方法的优缺点是什么?
Edit:
IPC_PRIVATE => IPC_NEW
【问题讨论】:
-
您可能需要向下滚动到BUGS section of the manual page。
-
感谢指出错误。
-
@JoachimPileborg 你能回答吗?