生産者が退社しても消費者を生かす方法

生産者が退社しても消費者を生かす方法

単純なパイプラインがあるとしましょう。

a | b

たとえば、ログアウトしてください。ランダムな時間アクティブな状態を維持する(作業完了など)安定したa方法はありますか?b

ベストアンサー1

b終了で終了しませんa

$ { echo hello; } | { read message; printf 'got "%s"\n' "$message"; sleep 5; echo "ok, I'm done"; }
got "hello"
ok, I'm done

ここでaecho hello)は単に文字列を出力して終了します。パイプ()の右側は、b文字列を読み取って出力してからしばらく待機し、終了echoする前に最後の操作を実行します。

b終了時に終了する場合、a必要な操作を実行する時間はまったくありません。唯一のものb できないここで実行される作業は、標準入力からより多くのデータを読み取ることです(最後readの追加データはすぐにファイルの終わりを取得します)。


内部にその他シナリオ(質問には記載されていません)、標準出力への書き込みを試みて(存在しないプロセスに進む)、終了すると(デフォルトでは)終了するb前に信号が受信されます。aaPIPEb

パイプへの書き込みを試みないと、a完了するまで実行され続けます。

おすすめ記事