一尘不染

SIGKILL之后如何进行清理?

linux

我正在使用共享内存的程序上工作。所述程序的多个实例将连接到现有程序或重新创建它,并在没有其他进程的情况下将其返回给OS,或者只是将其分离并终止。我想到了使用一个简单的计数器来跟踪使用它的进程数。

我正在使用atexit()函数进行清理,但是afaik在收到SIGKILL信号后,进程将不会进行任何清理,因此,如果这些进程中的任何一个不能正常终止,我可能永远无法清理内存。

有没有办法指定即使在SIGKILL信号之后也要做什么?我可能会写一些类似于计时器的机制来检查进程是否仍然存在,但是如果有其他方法,我真的很想避免这种情况。


阅读 471

收藏
2020-06-07

共1个答案

一尘不染

不,您的应用程序不能以任何方式捕获SIGKILL-如果可以,则应用程序可以忽略它,这将违背其目的。

2020-06-07