8

在具有多个进程的 Linux 系统中,系统 V 信号量允许使用 SEM_UNDO 选项,以防止在持有信号量的进程崩溃时使信号量“卡住”。防止 POSIX 信号量因持有信号量的进程崩溃而被卡住的正确方法是什么?或者 POSIX 是否保证在崩溃的情况下释放信号量?

4

1 回答 1

-1

您可以对 SIGSEGV 使用信号处理程序,然后解锁并删除信号处理程序。

// set handler
signal(SIGSEGV, handler);

void handler(int signum) {
// unlock the locked semaphores
signal(SIGSEGV, SIG_DFL);
}
于 2015-02-02T11:01:08.690 回答