如何防止进程中的多个实例(NPAPI插件)在Posix中运行?

时间:2013-04-08 17:40:33

标签: macos posix semaphore named-pipes npapi

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

什么是我最好的选择。

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

1 个答案:

答案 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);
    }
    ...
}