head
入力を数秒間待機するコマンドを開始する必要がありますが、何も到着しない場合は中止します。を閉じてはstdin
なりません (後で入力を他の読み取りプロセスで使用できるようにするためです。
私の最初のアプローチは、標準のタイムアウト パターンを使用することでした。
head & pid=$! ; sleep 2; kill $pid
残念ながら、バックグラウンドに送信されるhead
と、標準入力から何も読み取れなくなります。
次のアプローチは、バックグラウンドでタイムアウトを行うことでした。
(sleep 2; killall head) &
head
しかしもちろん、これは実行中の他のすべてのhead
プロセスを強制終了します。正しいものを見つけるのは複雑に思えます。
より良いアプローチはありますか?