Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
在具有多个进程的 Linux 系统中,系统 V 信号量允许使用 SEM_UNDO 选项,以防止在持有信号量的进程崩溃时使信号量“卡住”。防止 POSIX 信号量因持有信号量的进程崩溃而被卡住的正确方法是什么?或者 POSIX 是否保证在崩溃的情况下释放信号量?
您可以对 SIGSEGV 使用信号处理程序,然后解锁并删除信号处理程序。
// set handler signal(SIGSEGV, handler); void handler(int signum) { // unlock the locked semaphores signal(SIGSEGV, SIG_DFL); }