diff --git a/vl.c b/vl.c index 51ad671b72555b68e5c7cd4e5b5a1854a05feabd..b01c9b31b7fe5453576fcede370134bceb97fc9b 100644 --- a/vl.c +++ b/vl.c @@ -5495,6 +5495,14 @@ static void select_soundhw (const char *optarg) } #endif +#ifdef _WIN32 +static BOOL WINAPI qemu_ctrl_handler(DWORD type) +{ + exit(STATUS_CONTROL_C_EXIT); + return TRUE; +} +#endif + #define MAX_NET_CLIENTS 32 int main(int argc, char **argv) @@ -5534,6 +5542,8 @@ int main(int argc, char **argv) act.sa_handler = SIG_IGN; sigaction(SIGPIPE, &act, NULL); } +#else + SetConsoleCtrlHandler(qemu_ctrl_handler, TRUE); #endif init_timers();