繁体   English   中英

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

[英]How to detect program termination in C/Linux?

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

启用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 

你可以试试---> int raise (int sig)

并在引发SIGTERMSIGKILL时进行处理!!

您还可以注册一个在进程退出时调用的函数。 man atexit

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM