the*_*ine 5 c signals console-application windows-console
在 Windows 控制台应用程序中,可以ctrl+c使用以下命令捕获按下的按钮:
#include <stdio.h>\n#include <signal.h>\n\nvoid SigInt_Handler(int n_signal)\n{\n printf("interrupted\\n");\n}\n\nint main(int n_arg_num, const char **p_arg_list)\n{\n signal(SIGINT, &SigInt_Handler);\n getchar(); // wait for user intervention\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\xc3\x97这很有效,但如果用户按下关闭控制台窗口的十字键,它根本不起作用。有这方面的信号吗?
我需要这个的原因是我有一个 CUDA 应用程序,如果在计算某些内容时关闭它,它往往会导致计算机崩溃。该代码是多平台的,因此我更喜欢使用信号而不是SetConsoleCtrlHandler. 有办法吗?
正确的是SIGBREAK,你可以尝试一下:
#include <stdio.h>
#include <signal.h>
void SigInt_Handler(int n_signal)
{
printf("interrupted\n");
exit(1);
}
void SigBreak_Handler(int n_signal)
{
printf("closed\n");
exit(2);
}
int main(int n_arg_num, const char **p_arg_list)
{
signal(SIGINT, &SigInt_Handler);
signal(SIGBREAK, &SigBreak_Handler);
getchar(); // wait for user intervention
return 0;
}
Run Code Online (Sandbox Code Playgroud)
关闭控制台窗口后,程序将打印"closed"并返回 2。
| 归档时间: |
|
| 查看次数: |
4297 次 |
| 最近记录: |