c++处理ctrl+c的中断

如果按ctrl+c时未做一些处理 ,可能会造成一些资源未释放,比如网络端口被占用。

捕获ctrl+c需要使用c库的signal函数,具体代码如下:

#include 
#include 

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;
}

你可能感兴趣的:(#,C++)