c - SIGKILL 后如何进行清理?

标签 c linux signals

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

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

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

最佳答案

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

关于c - SIGKILL 后如何进行清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3360761/

相关文章:

machine-learning - "similar enough"对象的指标

将一维数组转换为矩阵

c++ - 为什么我在计算 Pascal 三角形的元素时在递归 C 程序中出现堆栈溢出错误?

c - 为什么 Linux 不遵循 Unix 系统调用约定?

php - 64 位 Linux/Ubuntu 和 openssl 问题(无法读取符号 : Bad value)

c++ - 如何在windows平台上使用c++信号

c++ - Qt 不发射信号

c - intmax_t 和 long long int 一样吗?

c++ - 货叉工作

linux - 是否有我可以在内核中使用的函数列表?