在POSIX semop()参数中,sem_flg = 0的含义是什么

时间:2013-10-09 23:43:39

标签: c linux semaphore

我正在检查semop()函数,结构sembuf的标志值可以是SEM_UNDO或IPC_NOWAIT。那么在我们将标志值传递为0的情况下,那么行为是什么?在某处我读到它是一个无操作。那是什么意思?谁能解释一下?

1 个答案:

答案 0 :(得分:1)

最好的办法是阅读规范 - semop()的POSIX规范解释了这一切。

如果标志为0,则表示该操作可能导致进程挂起,等待信号量变为可用(如果标志包含IPC_NOWAIT,它不会挂起),这也意味着如果进程崩溃,则不会调整信号量值以撤消操作(如果包含SEM_UNDO标志,系统将记录撤消信号量操作所需的信息。 这是否安全取决于你。