是否可以使用C ++程序监视哪些进程被用户或操作系统杀死,或者进程是否由于某些其他非分段错误或非法操作的原因而终止,并在之后执行某些操作?
答案 0 :(得分:1)
简短回答,是的,这是可能的。
答案很长:
您需要为可能导致进程终止的不同信号实现信号处理程序。您不一定能捕获每种类型的信号(特别是,SIGKILL无法捕获,因为这可能会使进程无法进行)。
使用sigaction
函数调用来设置信号处理程序。
有一个很好的列表,其中信号在这里做什么(从顶部约1/3): http://pubs.opengroup.org/onlinepubs/7908799/xsh/signal.h.html
编辑:抱歉,您认为这意味着在流程中,而不是来自流程外部。如果您“拥有”该过程,则可以使用ptrace
并使用PTRACE_GETSIGINFO
来获取信号。
一般来说“找到被杀的进程”会非常困难 - 或者至少要告诉他们自己退出的进程之间的区别,而不是因为出于其他原因而被杀的进程。