我需要启动一个head
命令,该命令将等待几秒钟的输入,但如果没有到达,它将中止。stdin
不得关闭(因为以后的输入仍可用于其他读取过程。
我的第一种方法是使用标准超时模式:
head & pid=$! ; sleep 2; kill $pid
但不幸的是,当发送到后台时,head
将不再从标准输入读取任何内容。
下一种方法是在后台执行超时操作:
(sleep 2; killall head) &
head
但这当然会杀死所有其他正在运行的head
进程;找到合适的似乎很复杂。
有更好的方法吗?