关于system("pause"),我知道它可以暂停命令行界面,等待用户的输入。但是对于以下代码,我遇到一些问题:
#include <iostream>
#include <csignal>
#include <Windows.h>
void controlCHandler(int signal)
{
std::cout << "Control-C detected..." << std::endl;
//exit(2);
//return;
system("pause");
}
int main()
{
signal(SIGINT, controlCHandler);
while (true) {
std::cout << "Sleeping..." << std::endl;
Sleep(1000);
}
return 0;
}
我的运行结果如下:
其中我按了三次Control-C才结束掉程序。难道pause命令不是把进程阻塞了么?为什么还能继续执行循环呢?这三次Control-C时各自发生了什么事情?
此外,我尝试对程序进行调试,发现在第一个和最后一个Control-C时,VS会报异常:
但中间一个并不会。这又是什么原因?
此外,换成return是按两次退出,用exit()直接退出程序是没有问题的,一次退出。
还望各位不吝赐教,感谢!如果需要环境方面的信息随时提出。