0
, 하나는 사용하여 ctrl+c
를 눌러 잡을 수 있습니다 : 그것은 모든 사용자가 십자가를 누를 때 작동하지 않습니다 제외Windows 콘솔 응용 프로그램 - closing 이벤트에 대한 신호는 윈도우 콘솔 응용 프로그램에서
#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
보다는 신호를 선호합니다. 방법이 있습니까?
는 그렇게하지가 돌아갑니다, 하지만 그 시점에서 출구를 중단 할 수는 없습니까? 핸들러 내부에서 콘솔이 종료되지 않도록하는 것 같습니다. –
당신은 영원히 기다릴 수 있습니다. "Force close"대화 상자가 나타납니다. 그러나 반환 값이 없으므로 중단 할 수 없습니다. 방금 응용 프로그램을 종료하고 응용 프로그램을 종료하는 방법을 원했습니다. –
@theswine, Vista에서는 나중에 대화가 없습니다. 제어 처리기가 TRUE를 반환하거나 반환하는 데 5 초 이상이 걸리면 Windows (csrss.exe)가 강제로 프로세스를 종료합니다. 핸들러가'FALSE'를 리턴하면, 디폴트 핸들러는'ExitProcess'를 호출합니다. 이 경우 프로세스 종료 코드는'STATUS_CONTROL_C_EXIT' (0xC000013A)입니다. – eryksun