【发布时间】:2015-05-16 14:22:21
【问题描述】:
我正在尝试为一些共享内存初始化二进制信号量。我不知道为什么我挂在一个信号量上来获取信号量,最终发现信号量值是-1,我一直在等待。我不明白为什么信号量值初始化为 -1 开始。任何澄清这一点的帮助将不胜感激。
semID = semget(IPC_PRIVATE, 1, S_IRUSR | S_IWUSR); // create sem
int semval = semctl(semID, 1,GETVAL);
printf("After init Semaphore value = %d \n", semval);
printf("sem ID = %d \n", semID);
输出:
After init semaphore value = -1
sem ID = 524304
【问题讨论】:
-
RTFM:“失败时,semctl() 返回 -1,errno 指示错误。”