
Linux シグナルは次のように動作すると思います:
各プロセスには各シグナルのデフォルトのシグナル ハンドラーがあり、一部のシグナルのデフォルトのシグナル ハンドラーはプロセスを終了し、他のシグナルのデフォルトのシグナル ハンドラーは単にシグナルを無視するなどです。
次の表は、デフォルトのシグナルハンドラが実行できるすべてのアクションを示しています(この表はこのドキュメンテーション):
学期 デフォルトのアクションはプロセスを終了させることです。
イグン デフォルトのアクションは信号を無視することです。
芯 デフォルトのアクションはプロセスを終了し、コアをダンプすることです(core(5)を参照)。
停止 デフォルトのアクションはプロセスを停止することです。
続き デフォルトのアクションは、現在停止している場合、プロセスを続行することです。
デフォルトのシグナルハンドラを独自のシグナルハンドラで上書きするには、信号()(これは非推奨だと思います)またはシグナルアクション()。
ここまでのところは正しいでしょうか?
ここで質問ですが、デフォルトのシグナル ハンドラーをオーバーライドできないシグナルはありますか?
答え1
リンクした両方のマニュアルページには、ハンドラをオーバーライドできないシグナルについて記載されています。signal(2)
:
信号はキャッチし
SIGKILL
たりSIGSTOP
無視したりすることはできません。
で sigaction(2)
:
シグナム信号を指定し、 および を除く任意の有効な信号を指定でき
SIGKILL
ますSIGSTOP
。