我正在使用共享内存的程序上工作。所述程序的多个实例将连接到现有程序或重新创建它,并在没有其他进程的情况下将其返回给OS,或者只是将其分离并终止。我想到了使用一个简单的计数器来跟踪使用它的进程数。
我正在使用atexit()
函数进行清理,但是afaik在收到SIGKILL信号后,进程将不会进行任何清理,因此,如果这些进程中的任何一个不能正常终止,则可能永远无法清理内存。
有没有办法指定即使在SIGKILL信号之后也要做什么?我可能会写一些类似于计时器的机制来检查进程是否仍然存在,但是如果有其他方法,我真的很想避免这种情况。
最佳答案
不,您的应用程序不能以任何方式捕获SIGKILL-如果可以,则应用程序可以忽略它,这将违背其目的。
关于c - SIGKILL之后如何进行清理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3360761/