c++处理ctrl+c的中断
					 分类:C++, Others
阅读 (4,168)
							 Add comments
					
		1月 222017
	如果按ctrl+c时未做一些处理 ,可能会造成一些资源未释放,比如网络端口被占用。
捕获ctrl+c需要使用c库的signal函数,具体代码如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #include <iostream> #include <signal.h> bool app_stopped = false; void sigint_handler(int sig){ 	if(sig == SIGINT){ 		// ctrl+c退出时执行的代码 		std::cout << "ctrl+c pressed!" << std::endl; 		app_stopped = true; 	} } int main(int argc, char **argv){ 	signal(SIGINT, sigint_handler); 	while(true){ 		std::cout << "while loop..." << std::endl; 		if (app_stopped){ 			break; 		} 	} 	std::cout << "app stopped!" << std::endl; 	return 0; } | 
输出结果:
| 1 2 3 4 5 6 7 8 9 10 11 | ... while loop... while loop... while loop... while loop... while loop... ^Cwhile loop... while loop... ctrl+c pressed! while loop... app stopped! | 

 
                 微信扫一扫,打赏作者吧~
微信扫一扫,打赏作者吧~