我有多个进程使用信号量进行通信。
sem_open("\name",O_CREATE,S_IRWXU|S_IRWXG,10);
我有两个问题w.r.t跟随:
现在,当一个进程突然死亡而不调用sem_close或sem_unlink时。剩下的流程会发生什么?
如果调用sem_close(),则不会为1进程调用sem_unlink()。所有其他进程,调用sem_close()和sem_unlink()。在所有进程退出后,信号量是否仍然存在?
答案 0 :(得分:5)
回答你的问题:
扩展一下: sem_unlink删除命名的信号量,并且一旦其引用计数为0就会破坏信号量。这是在打开它的所有进程调用sem_close或已退出之后。
参考文献:书 - Unix网络编程 - W.Richard Stevens的进程间通信,第2卷,第10页