【发布时间】:2015-04-03 18:30:00
【问题描述】:
我将在 Linux 上同步两个不同的进程。两个进程都想访问一个设备,一个进程可以同时使用该设备。到目前为止,我一直在使用命名信号量进行同步,并且它运行良好,直到有人杀死了当前在设备上运行的进程。在这种情况下,信号量不会被释放,这会导致所有试图获取信号量/访问设备的进程挂起。
这可以在 Windows 下使用互斥锁简单解决。在这个系统中,当拥有的线程/进程终止时,命名的互斥锁会自动释放。
我将感谢 Linux 上的所有 cmets 和/或解决方案。
提前致谢! 托雷诺
【问题讨论】:
-
即使Linux进程被杀死,它是否也不会得到WM_CLOSE的等价物?当然,它会收到 some 信号(除非被 kill -9 或其他什么杀死(我完全忘记了 Linux 是如何工作的,但在没有警告的情况下杀死似乎不太可能))
-
你听说过 C++ RAII 成语stackoverflow.com/questions/2321511/…吗?它将帮助您自动关闭/释放您想要的任何东西。
-
阅读Advanced Linux Programming;同步的方式有很多种(sem_overview(7)、flock(2)等......)
-
solution here 建议文件锁定....
-
标签: c++ linux synchronization