シェルがプログラムを実行している場合、Ctrl + Cを押すとシェルもSIGINT信号を受け取りますか?

シェルがプログラムを実行している場合、Ctrl + Cを押すとシェルもSIGINT信号を受け取りますか?

Ctrl+C押すとSIGINT読みましたフォアグラウンドプロセスグループ

今ここに受け入れられる答えがあります。質問説明する:

デフォルトでは、信号はすべてのフォアグラウンドプロセス(シェルやプログラムなど)で受信されます。

cat内部で実行してみるbashPGIDforbashcatが異なるため、同じプロセスグループに属しません。

では、 を押すと信号だけCtrl+Ccat入るようになりますSIGINT(だから私が引用した答えは間違っていました) そうですか?

答え1

この質問はbashスクリプトについてです。 bashを対話的に実行しています。これはプロセスグループによって異なります。これがプロセスグループが発明された理由です。プロセスグループの目的は、インタラクティブに開始されたタスクに関連するすべてのプロセスをキャプチャすることです。したがって、対話型シェルは別々のプロセスグループで各タスクを開始しますが、スクリプトを実行するシェルは新しいプロセスグループを作成しません。

関連情報