gpt4 book ai didi

c - Windows 控制台应用程序 - 关闭事件的信号

转载 作者:行者123 更新时间:2023-12-04 12:30:37 26 4
gpt4 key购买 nike

在 windows 控制台应用程序中,可以捕捉按下 ctrl+c通过使用:

#include <stdio.h>
#include <signal.h>

void SigInt_Handler(int n_signal)
{
printf("interrupted\n");
}

int main(int n_arg_num, const char **p_arg_list)
{
signal(SIGINT, &SigInt_Handler);
getchar(); // wait for user intervention
}

这很有效,但如果用户按下十字键则根本不起作用 ×关闭控制台窗口。有什么信号吗?

我需要这个的原因是我有这个 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;
}

关闭控制台窗口后,程序将打印 "closed"并将返回 2。

关于c - Windows 控制台应用程序 - 关闭事件的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26658707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com