如何在C / Linux中检测程序终止?

时间:2014-01-30 08:32:42

标签: c linux process

应用程序如何发现它刚刚开始终止?我可以使用信号处理程序吗?

4 个答案:

答案 0 :(得分:0)

您可以尝试---> int raise (int sig)

SIGTERMSIGKILL被提升时处理!!

答案 1 :(得分:0)

您还可以注册退出进程时要调用的函数。见man atexit

答案 2 :(得分:0)

您可以为SIGINT,SIGKILL和SIGSEGV安装信号处理程序。在信号处理程序中,您可以进行堆栈转储,以便稍后调试应用程序。在信号处理程序中,将SIGINT,SIGKILL和SIGSEGV的处置设置回默认值。

答案 3 :(得分:0)

启用atexit()。当程序正常终止时,它将调用一个函数。

示例代码:

#include <stdio.h>      
#include <stdlib.h>    
void funcall(void);
void fnExit1 (void)
{
  printf ("Exit function \n");
}

int main ()
{
  atexit (fnExit1);
  printf ("Main function start\n");
  funcall();
  printf ("Main function end\n");
  return 0;
}

void funcall(void)
{
    sleep(2);
    exit(0);
}

输出:

Main function start
Exit function