私は「Unix環境の高度なプログラミング」という本を読んでいます。
私が理解できない文は次のとおりです。
特に、これらのexec()
機能は、キャプチャされた信号の処理を基本操作に変更し、他のすべての信号の状態を保存します。
信号の動作がデフォルトの動作に変更されたことがわかります。しかし、信号の状態はどうですか?
答え1
存在する
具体的には、exec()関数はキャプチャされた信号の処理をデフォルトの操作に変更し、他のすべての信号の状態を維持します。
「他のすべての信号の状態」は、捕捉されていない信号、つまり無視される信号を示します(SIG_IGN
)。
プログラムがシグナルハンドラを追加すると、プログラムはシグナルをキャプチャできます(もちろんキャプチャできない合計を除くSIGKILL
)。関数をSIGSTOP
呼び出すときにexec()
関数が呼び出された後は、これらのシグナルハンドラのどれもプログラムには適用されませんexec()
。
プログラムが特定のシグナルのシグナルハンドラを追加しない場合、関数を呼び出してもシグナルがexec()
プログラムに影響する方法は変わりません。