Ctrl+C
押すとSIGINT
読みましたフォアグラウンドプロセスグループ。
今ここに受け入れられる答えがあります。質問説明する:
デフォルトでは、信号はすべてのフォアグラウンドプロセス(シェルやプログラムなど)で受信されます。
cat
内部で実行してみるbash
とPGID
forbash
とcat
が異なるため、同じプロセスグループに属しません。
では、 を押すと信号だけCtrl+C
がcat
入るようになりますSIGINT
(だから私が引用した答えは間違っていました) そうですか?
答え1
この質問はbashスクリプトについてです。 bashを対話的に実行しています。これはプロセスグループによって異なります。これがプロセスグループが発明された理由です。プロセスグループの目的は、インタラクティブに開始されたタスクに関連するすべてのプロセスをキャプチャすることです。したがって、対話型シェルは別々のプロセスグループで各タスクを開始しますが、スクリプトを実行するシェルは新しいプロセスグループを作成しません。