POSIX 进程间同步

Posted

技术标签:

【中文标题】POSIX 进程间同步【英文标题】:POSIX interprocess synchronization 【发布时间】:2013-11-26 00:39:37 【问题描述】:

我正在创建一个独立于平台的数据可视化工具,并希望它像这样工作:

    调用者创建可视化工具的新进程(Windows 上的 CreateProcess 和 Linux 上的 fork-and-exec) 调用者创建一些同步对象并在其上阻塞 可视化工具找到对象并向其发出信号

我知道我可以在 Windows 上使用命名事件来实现第 2 步和第 3 步,但在 Linux 上我应该怎么做呢?

谢谢。

【问题讨论】:

可能是一个命名信号量。 @Duck 是的,这正是我想要的!添加问题的答案,以便我接受。谢谢。 【参考方案1】:

您应该能够使用named semaphore 完成此操作,尽管它可能必须更像 (1) 创建信号量,(2) fork/exec; (3) parent 等待信号量; (4) 可视化职位。如果这里只有父/子关系,您可以使用未命名的信号量,但您必须先设置共享内存。命名更灵活一些。

【讨论】:

我已经实现了类似的东西,并且效果很好......但是在Windows上,如果所有引用该事件的进程都被删除,则事件对象将被删除,但是,在Linux上,信号量对象仍然存在持久性,如果我的进程崩溃,则在某些情况下。如何避免这种行为。

以上是关于POSIX 进程间同步的主要内容,如果未能解决你的问题,请参考以下文章

进程同步与相互排斥:POSIX有名信号量

进程间通信方式

linux进程间通信之Posix 信号量用法详解代码举例

linux 下进程间的同步机制都有哪些

信号量

Posix共享内存