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

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

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

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

解决方法

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

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...