在具有多个进程的Linux系统中,系统V信号量允许选择SEM_UNDO,以防止信号量被卡住"卡住"如果持有信号量的进程崩溃。什么是防止POSIX信号量因持有信号量的进程中的崩溃而卡住的正确方法?或者POSIX 保证在发生崩溃的情况下信号量是否被释放?
答案 0 :(得分:-1)
您可以使用SIGSEGV的信号处理程序,然后解锁并删除信号处理程序。
// set handler
signal(SIGSEGV, handler);
void handler(int signum) {
// unlock the locked semaphores
signal(SIGSEGV, SIG_DFL);
}