在linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号。
这个信号的缺省处理方法是退出进程,大多数时候这都不是我们期望的。因此我们需要重载这个信号的处理方法。调用以下代码,即可安全的屏蔽SIGPIPE:
struct sigaction sa;
sa.sa_handler = SIG_IGN;
sigaction( SIGPIPE, &sa, 0 );
把这几行代码,看作是windows下的WSAStartUp()就好了。
这个信号的缺省处理方法是退出进程,大多数时候这都不是我们期望的。因此我们需要重载这个信号的处理方法。调用以下代码,即可安全的屏蔽SIGPIPE:
struct sigaction sa;
sa.sa_handler = SIG_IGN;
sigaction( SIGPIPE, &sa, 0 );
把这几行代码,看作是windows下的WSAStartUp()就好了。
屏蔽SIGPIPE信号
本文介绍在Linux环境下如何通过重载SIGPIPE信号处理方法避免进程因尝试发送数据到已断开连接的socket而意外终止。通过设置信号处理为SIG_IGN可以有效解决此问题。
418

被折叠的 条评论
为什么被折叠?



