“断开的管道”的错误

来源:互联网 发布:伙伴云表格mac版下载 编辑:程序博客网 时间:2024/05/17 14:15

 今天在测试程序的时候,突然给我来了一个“断开的管道”的,程序退出了。由于第一次做LINUX环境下的程序所以只好GOOGLE下罗,我把网上所找的办法归类下:

1、MSG_NOSIGNAL

linux下当连接断开,还发数据的时候,不仅send()的返回值会有反映,而且还会像系统发送一个异常消息,如果不作处理,系统会出BrokePipe,程序会退出。为此,send()函数的最后一个参数可以设MSG_NOSIGNAL,禁止send()函数向系统发送异常消息。

2、signal(SIGPIPE, SIG_IGN);

#include<signal.h>

序开始的时候加一句:
signal(SIGPIPE, SIG_IGN);
系统对SIGPIPE的默认处理是杀死这个进程,你设置一下,直接忽视这个信号就可以了。

原创粉丝点击