关于信号量值的问题,如果进程在递减信号量值后异常终止

时间:2011-09-23 13:56:25

标签: linux inter-process-communicat

如果在将信号量的值从1递减到0之后进程发生故障,根据我的理解,信号量的值仍为0.

如果再次出现相同的进程并尝试重新获取相同的信号量,它将永远阻止。

如果我的进程异常停止,有没有办法在递减后将信号量值重置为1?

1 个答案:

答案 0 :(得分:1)

我假设您使用标准的semctl()/ semop()API作为信号量。

有一个名为SEM_UNDO的标志可以告诉内核在进程终止时重置信号量的值。您需要在semop()调用中使用它。

此处提供更多信息:http://beej.us/guide/bgipc/output/html/multipage/semaphores.html