0

在 Windows 上,我通过创建命名信号量解决了这个问题。如果插件 1 在持有信号量时崩溃,则释放信号量。但 Posix(在 Mac 上)并非如此,信号量仍然存在。由于 sigaction 不会释放信号量上的 SIGKILL,所以我不得不放弃它。

我最好的选择是什么。

命名管道、端口、消息队列、远程函数执行?

4

1 回答 1

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);
    }
    ...
}
于 2013-04-17T17:17:12.467 回答