Catch进程在Unix下用c ++杀死

时间:2014-03-31 21:50:29

标签: c++ unix process arm

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

1 个答案:

答案 0 :(得分:1)

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

答案很长:

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

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

有一个很好的列表,其中信号在这里做什么(从顶部约1/3): http://pubs.opengroup.org/onlinepubs/7908799/xsh/signal.h.html

编辑:抱歉,您认为这意味着在流程中,而不是来自流程外部。如果您“拥有”该过程,则可以使用ptrace并使用PTRACE_GETSIGINFO来获取信号。

一般来说“找到被杀的进程”会非常困难 - 或者至少要告诉他们自己退出的进程之间的区别,而不是因为出于其他原因而被杀的进程。