c++ - 在 Unix 下的 c++ 中捕获进程终止

标签 c++ unix process arm

是否有可能使用 C++ 程序来监视哪些进程被杀死(被用户或操作系统杀死),或者进程是否由于其他一些不是段错误或非法操作的原因而终止,并在之后执行一些操作?

最佳答案

简短的回答,是的,这是可能的。

长答案:

您需要为可能终止进程的不同信号实现信号处理程序。您不一定能捕捉到每种类型的信号(特别是, SIGKILL 不可能捕捉到,因为这可能会使进程无法终止)。

使用 sigaction函数调用来设置你的信号处理程序。

这里有一个不错的列表,其中列出了哪些信号可以做什么(从顶部向下大约 1/3): http://pubs.opengroup.org/onlinepubs/7908799/xsh/signal.h.html

编辑:抱歉,我认为您的意思是在流程内,而不是流程外。如果您“拥有”该过程,则可以使用 ptrace PTRACE_GETSIGINFO 获取信号是什么。

通常“找到被杀死的进程”是相当困难的——或者至少要区分只是自己退出的进程与那些因为其他原因被杀死的进程之间的区别。

关于c++ - 在 Unix 下的 c++ 中捕获进程终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22772908/

相关文章:

c++ - A a; 之间有什么区别吗?和 A = A()?

c++ - 错误 : expected ')' before '&' token

c++ - 在 C/C++ 中将指针作为参数传递?

sql - 字符类中的特殊字符

c - 如何使用linux地址空间切换来运行新进程?

c++ - 这个逻辑运算工作有什么问题?

unix - 创建给定大小的 gzip block (填充)

c - Scanf() 无法检测到错误的输入

c# - C#在运行时更改进程FileName

java - 在内存文件中作为在 Linux 上的 Java 中处理的参数