【问题标题】:Equivalent of Sys V SEM_UNDO for posix semaphores等效于 posix 信号量的 Sys V SEM_UNDO
【发布时间】:2015-03-19 21:49:43
【问题描述】:

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

【问题讨论】:

标签: c posix standards semaphore sysv-ipc


【解决方案1】:

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

// set handler
signal(SIGSEGV, handler);

void handler(int signum) {
// unlock the locked semaphores
signal(SIGSEGV, SIG_DFL);
}

【讨论】:

  • 但是不能保证哪个线程捕获了 SEGV。所以不能保证你会在拥有锁的线程中。
  • 我猜信号量没有所有权的概念,互斥体有。
猜你喜欢
  • 2021-09-23
  • 2013-05-25
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 1970-01-01
  • 2011-09-13
  • 2020-12-23
  • 1970-01-01
相关资源
最近更新 更多