在诸如这样的管道中command1 | command2
,
当我听说命令的进程形成一个进程组时,我的问题就出现了。如果它们没有相同的生命周期,那么命令进程的进程组是不是毫无意义?
这些进程同时启动,并发运行,但不必同时停止。当两个进程都终止时,shell 将认为整个管道已终止(并显示新的提示)。
如果command2
在command1
执行之前结束(或关闭其标准输入流),command1
然后尝试写入输出,则该输出无处可去。然后command1
会收到一个SIGPIPE
信号,它的默认动作是 abort command1
。但command1
它本身可以覆盖这个默认值,这样它就可以继续运行。在这种情况下,它尝试写入输出将产生一个普通的 I/O 错误 ( EPIPE
),它可以根据需要做出反应。
归档时间: |
|
查看次数: |
1871 次 |
最近记录: |