1

head入力を数秒間待機するコマンドを開始する必要がありますが、何も到着しない場合は中止します。を閉じてはstdinなりません (後で入力を他の読み取りプロセスで使用できるようにするためです。

私の最初のアプローチは、標準のタイムアウト パターンを使用することでした。

head & pid=$! ; sleep 2; kill $pid

残念ながら、バックグラウンドに送信されるheadと、標準入力から何も読み取れなくなります。

次のアプローチは、バックグラウンドでタイムアウトを行うことでした。

(sleep 2; killall head) &
head

しかしもちろん、これは実行中の他のすべてのheadプロセスを強制終了します。正しいものを見つけるのは複雑に思えます。

より良いアプローチはありますか?

4

3 に答える 3