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