解决SIGPIPE信号导致的程序崩溃

Linux下,对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程。解决方法是在main函数中增加以下代码:

#ifndef WIN32
	sigset_t signal_mask;
	sigemptyset(&signal_mask);
	sigaddset(&signal_mask, SIGPIPE);
	pthread_sigmask(SIG_BLOCK, &signal_mask, NULL);
#endif

参考文章:《socket编程—— 服务器遇到Broken Pipe崩溃

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注