假设我们有一个简单的管道:
set -eo pipefail;
echo 'foo' | cat
怎么cat
知道什么时候退出?是在 STDIN 流结束时还是cat
收到信号时?在我的情况下,生产者进程收到一个 SIGINT 然后退出代码 1,那么cat
(消费者进程)如何知道生产者进程退出的退出代码是什么?
假设我们有一个简单的管道:
set -eo pipefail;
echo 'foo' | cat
怎么cat
知道什么时候退出?是在 STDIN 流结束时还是cat
收到信号时?在我的情况下,生产者进程收到一个 SIGINT 然后退出代码 1,那么cat
(消费者进程)如何知道生产者进程退出的退出代码是什么?
cat
不知道echo
的信号。它接收每个man pipe(7)的文件结束条件:然而,对于管道的编写者,有 SIGPIPE。查看相同的手册页