SIGPIPE信号处理

来源:互联网 发布:农村淘宝考试题和答案 编辑:程序博客网 时间:2024/06/05 22:52
在unix下写socket程序,会遇到连接建立,若某一端关闭连接,而另一端仍然向它写数据,第一次写数据后会收到RST响应,此后再写数据,内核将向进程发出SIGPIPE信号,通知进程此连接已经断开。而SIGPIPE信号的默认处理是终止程序,导致上述问题的发生。

 

为避免这种情况,可以选择忽略SIGPIPE信号,不执行任何动作。

#include <signal.h>
//SIGPIPE ignore
struct sigaction act;
act.sa_handler = SIG_IGN;
if (sigaction(SIGPIPE, &act, NULL) == 0) {
    LOG("SIGPIPE ignore");
}
0 0
原创粉丝点击