【问题标题】:Catch process kills in c++ under UnixUnix下c++中的catch进程杀死
【发布时间】:2014-03-31 21:50:28
【问题描述】:

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

【问题讨论】:

  • 您可以在一个循环中列出所有进程。这样您就会知道其中一个何时终止,因为它将不再列出。

标签: c++ unix process arm


【解决方案1】:

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

长答案:

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

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

这里有一个不错的信号列表(从顶部向下大约 1/3): http://pubs.opengroup.org/onlinepubs/7908799/xsh/signal.h.html

编辑:抱歉,您的意思是在流程内,而不是从流程外。如果您“拥有”该过程,则可以使用ptracePTRACE_GETSIGINFO 来获取信号。

一般来说“找到被杀死的进程”是相当困难的——或者至少要区分那些只是自行退出的进程,而不是那些因为其他原因被杀死的进程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多