是否有可能使用 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/