1

シェルからフォアグラウンド プロセスを開始し、ctrl-c を使用して SIGINT を配信し、それが処理されずに終了した場合、シェルはプロセスが SIGINT によって強制終了されたかどうかをどのように認識しますか。私の仮定は、exit を呼び出してもプロセスがゾンビに移行しないということです。

ありがとう

4

2 に答える 2

1

シェルはwait(2)ファミリーの関数を使用して、子が kill /terminate されるのを待ち、子を殺したシグナルがあればそれを取得します。

于 2013-03-03T17:50:03.160 に答える
0

シグナルを処理しないアプリケーションは、実際にはデフォルト ハンドラーを実行します (これにより、 の場合はアプリが強制終了されますSIGINT)。アプリケーションへのシグナルの配信とハンドラーの呼び出し (デフォルトまたはアプリケーションによって設定されたもの) はオペレーティング システムによって処理されるため、OS がどのシグナルがアプリケーションを強制終了したかを認識し、それに応じて終了コードを設定する場所があります。シェルは終了コードを表示するだけですが、それを設定するのは OS です。

于 2013-03-03T17:46:56.850 に答える