根据post,它表示内核向任何试图写入没有读取器的管道的进程发送SIGPIPE。这很有用,因为否则像yes | head这样的作业将永远不会终止。如果我理解正确的话,当用户调用yes|head时,
yes | head
yes|head
yes
head
ckx4rj1h1#
下面是一个很好的例子:
% yes | uniq & [1] 71546 y % ps gxa | grep yes 71545 pts/0 S 0:05 yes % kill -PIPE 71545 % [1]+ Done yes | uniq
在subshell中调用yes piped到uniq。您会看到单独的“y”被打印出来,作业被后台处理。稍等片刻,然后发现yes进程的PID仍在运行。然后向它发送PIPE信号。一切都干净地完成了。查看source for yes,我们没有发现SIGPIPE的处理程序,所以使用了默认的终止操作。
uniq
1条答案
按热度按时间ckx4rj1h1#
下面是一个很好的例子:
在subshell中调用
yes
piped到uniq
。您会看到单独的“y”被打印出来,作业被后台处理。稍等片刻,然后发现yes
进程的PID仍在运行。然后向它发送PIPE信号。一切都干净地完成了。查看source for yes,我们没有发现SIGPIPE的处理程序,所以使用了默认的终止操作。