微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

共享POSIX对象在进程结束/死亡时进行清理

有没有办法执行POSIX共享同步对象清理,特别是在进程崩溃时?锁定POSIX信号量解锁是最理想的事情,但自动“收集”队列/共享内存区域也会很好.值得关注的另一件事是我们通常不能使用信号处理程序,因为SIGKILL无法捕获.

我只看到一个替代方案:一些外部守护进程接受订阅,并且’keep-alive’请求作为监视程序工作,因此没有关于某个对象的通知,它可以根据注册的策略关闭/解锁对象.

有没有更好的选择/主张?我之前从未认真对待POSIX共享对象(套接字足以满足我的所有需求,而且我的意见更有用)并且我没有找到任何适用的文章.我很乐意在这里使用插座但不能因为历史原因.

解决方法

您可以使用文件锁定来协调您的流程,而不是使用信号量.文件锁的重要优势在于,如果进程终止,它们将被释放.您可以将每个信号量映射到共享文件中的一个字节的锁定,并知道锁定将在退出时释放;在大多数版本的unix中,你锁定的字节甚至不必存在.在marc Rochkind的书“高级Unix编程”第1版中有代码,但不知道它是否在最新的第2版中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐