c - 检测程序终止(C,Windows)

标签 c windows process termination

我有一个程序在完成之前必须执行某些任务。问题是有时程序会因异常而崩溃(例如无法访问数据库等)。 现在,有什么方法可以检测异常终止并在它终止之前执行一些代码吗?

谢谢。

感谢代码。

最佳答案

<强>1。 Win32

Win32 API 包含一种通过 SetUnhandledExceptionFilter 执行此操作的方法函数,如下:

LONG myFunc(LPEXCEPTION_POINTERS p)
{
     printf("Exception!!!\n");     
     return EXCEPTION_EXECUTE_HANDLER;
}

int main()
{
     SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)&myFunc);    
     // generate an exception !
     int x = 0;
     int y = 1/x;
     return 0;
}

<强>2。 POSIX/Linux

我通常通过 signal() 执行此操作函数,然后适本地处理 SIGSEGV 信号。您还可以处理 SIGTERM 信号和 SIGINT,但不能处理 SIGKILL(按设计)。您可以使用 strace()获取回溯以查看是什么导致了信号。

关于c - 检测程序终止(C,Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1394250/

相关文章:

c - 如何使用 C 程序从 QNX 获取内存信息?

windows - Windows 进程的转储句柄和有关它们的额外信息

Windows Installer 数据库检查?

linux - 关于操作系统中的进程控制 block

python - 删除包含 2 个单词的引号并删除它们之间的逗号

php - ffmpeg后台进程完成后如何管道新命令?

c - 分散在 mpi [一个非常简单的代码]

C++ 预处理器——连接参数

c - 如何忽略c中以 '#'开头的输入字符串?

c++ - 如何将 UNC 转换为本地路径