正确关闭消费者的方法

亚历山大·米尔斯

假设我们有一个简单的管道:

set -eo pipefail;
echo 'foo' | cat

怎么cat知道什么时候退出?是STDIN流结束还是cat接收到信号?在我的情况下,生产者进程接收到SIGINT,然后以代码1退出,那么cat(消费者进程)如何知道生产者进程以哪个退出代码退出?

塞尔吉(Sergiy Kolodyazhnyy)

cat不了解echo的信号。它通过每个人工管道接收文件结束条件(7)

如果所有引用管道写端的文件描述符都已关闭,则从管道读取(2)的尝试将看到文件末尾(read(2)将返回0)。

对于管道的编写者来说,有SIGPIPE。见同一手册页

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章