IPC:共享内存终止进程通知

Posted

技术标签:

【中文标题】IPC:共享内存终止进程通知【英文标题】:IPC: Shared memory killed process notfication 【发布时间】:2012-01-31 16:31:15 【问题描述】:

在共享内存系统中,当两个进程共享一个共享内存系统时,一个进程被杀死后,共享内存系统如何通知另一个正在运行的进程被杀死?

【问题讨论】:

【参考方案1】:

共享内存,顾名思义,是一个内存,一个被动对象。您需要使用互斥锁来跟踪另一个应用程序的活动。每个应用程序创建自己的互斥体并等待另一个进程的互斥体。如果应用程序终止,互斥锁状态将变为 Abandoned。

【讨论】:

非常感谢 Eugene Mayevski 'EldoS。 kernel.org/doc/man-pages/online/pages/man7/signal.7.html 供参考:SIGCHLD 20,17,18 Ign Child 停止或终止 @mav_2k 如果您在谈论 linux 或 Unix,您可能需要通过为您的问题设置适当的标签来反映这一点。【参考方案2】:

一种方法是让父/控制进程将所有其他进程作为子进程启动。当任何孩子死亡时,父母将收到SIGCHLD,并且可以以理智的方式处理共享内存/资源的清理。

PostgreSQL 遵循这种设计模式及其 postmaster 和 worker 进程。

请注意,在大多数 Unix 系统上,互斥锁在进程死亡期间不会被操作系统更改/解锁。信号量提供了一个 UNDO 功能,但它们无疑比互斥量重得多。 YMMV。

【讨论】:

非常感谢 CoreyStup。 kernel.org/doc/man-pages/online/pages/man7/signal.7.html 供参考:SIGCHLD 20,17,18 Ign Child 停止或终止

以上是关于IPC:共享内存终止进程通知的主要内容,如果未能解决你的问题,请参考以下文章

35 守护进程 互斥锁 IPC 共享内存 的方式 生产者消费者模型

进程间通信(IPC)

Linux进程IPC浅析[进程间通信SystemV共享内存]

Linux进程IPC浅析[进程间通信SystemV共享内存]

五十进程间通信——System V IPC 之共享内存

Linux中的共享内存(ipc)