在Windows上,我通过创建命名信号量解决了这个问题。如果插件1在保持信号量时崩溃,则释放信号量。但不是Posix(在Mac上)的情况,信号量仍然存在。因为sigaction不会释放信号量上的SIGKILL,所以我不得不放弃它。
什么是我最好的选择。
命名管道,端口,消息队列,远程函数执行?
答案 0 :(得分:0)
我使用POSIX中的open()调用修复了它。显然,操作系统会释放进程的文件描述符,即使进程已被SIGKILL终止
Constructor()
{
m_fd = open(filePath, O_CREAT | O_EXLOCK | O_NONBLOCK);
if (m_fd == -1)
{
throw exception;
}
...
}
Destructor()
{
if(m_fd != 0)
{
close(m_fd);
}
...
}