管道命令的超时调用

时间:2016-08-25 03:48:04

标签: bash

有人可以解释timeout如何为管道命令工作?例如,

timeout 2s a | b

以下timeout仅适用于a命令?
如果确实发生超时,是否会导致管道损坏?

1 个答案:

答案 0 :(得分:1)

是的,timeout是常规命令,而不是内置命令,因此使用参数timeout2sa执行。如果超时发生,b中管道的读取端将在读取其中的所有数据后指示EOF(因为没有剩余的进程写入管道)。但是b将不会从a退出(无论是因为超时还是因为它在超时之前完成)而得到SIGPIPE信号;一个破损的管道在写入方面是一个问题,而不是读取方面。