对于posix信号量,相当于Sys V SEM_UNDO

Joe*_*Joe 7 c standards posix semaphore sysv-ipc

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

Poi*_*ter -1

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

// set handler
signal(SIGSEGV, handler);

void handler(int signum) {
// unlock the locked semaphores
signal(SIGSEGV, SIG_DFL);
}
Run Code Online (Sandbox Code Playgroud)