您的位置:首页 > 其它

SIGPIPE信号

2017-06-03 18:23 183 查看
在dumpsys源码里,对SIGPIPE信号进行了屏蔽

signal(SIGPIPE,

SIG_IGN);

SIGPIPE信号是什么呢?

broken pipe

普遍解释是:当管道的读端 关闭,而写进程继续向管道写数据的时候,就会有SIGPIPE信号

管道为什么要这样设计呢?

通过一个例子我们就可以理解这样设计的妙处了。

看看下面这个命令

yes | head

yes命令不断的打印y

head命令对传入的数据显示前10行

有了SIGPIPE信号后,在head不再读取管道数据后,yes进程捕获到SIGPIPE信号就会停止,

我们就不用特意的去关心yes的关闭,就避免了系统资源的消耗。

由于管道的这种发送SIGPIPE信号的设计,在有的需求中,为了保证写进程正常退出,不受SIGPIPE信号的影响,

就需要对SIGPIPE信号进行屏蔽操作,于是就使用signal(SIGPIPESIG_IGN);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: