読書中の直接的または間接的な文脈における子供の行動。

読書中の直接的または間接的な文脈における子供の行動。

私がするとき

( sleep 1; read x ; echo x=$x; echo done ) & 

その後、デフォルトの端末設定を使用すると操作が停止しますSIGTTIN

もし私がするなら

( ( sleep 1; read x ; echo x=$x; echo done ) & )

read内部システムコールはreadEOF(0戻り)を取得し、SITTINの停止は発生しません。

これらの行動の説明は何ですか?

ベストアンサー1

これは、2番目のケースでは、バックグラウンドコマンドがサブシェルで実行され、サブシェルにジョブ制御がないため、入力をリダイレクトし、/dev/null信号SIGINTを無視してSIGQUITバックグラウンドモードを偽造するためです。

次の回答も参照してください。

バックグラウンドプロセスのサブシェル奇妙な動作

スクリプトで開始されたプロセスが SIGINT を受信できませんでした。

`(sleep 123&)` bashのジョブ制御からプロセスグループを削除しますか?

バックグラウンドで開始する前にプロセスが終了しました。

おすすめ記事