さまざまな信号の基本ハンドラを見てください。

さまざまな信号の基本ハンドラを見てください。

SIGKILLなどの各信号の機能である基本的な信号ハンドラがあることを知っています。どのファイルに記録されていますか? signal.hを見ようとしましたが、見つかりませんでした。

私は各信号ハンドラが少なくとも1つの関数(ハンドラ)を持つことを望みます。

このファイルを見つけるのに役立ちます。

答え1

カーネルコードを読みたくない場合は、見たい「ファイル」はありません。

これは少し単純すぎます。詳細については、Rago&Stevensの「UNIX環境の高度なプログラミング」のシグナルに関する章を参照してください。

「基本信号処理」は2つの部分から構成される。これらはすべてカーネルに組み込まれています。スケジューラは、プロセスに保留中の信号があることを検出すると、必要に応じてそのプロセスにCPU(コンテキスト切り替え)を提供します。次に、信号がプロセスに渡されます。プロセスには信号マスクがあります。マスクを意図的に設定すると、2 つのシグナル SIGKILL と SIGSTOP を無視またはブロックすることはできません。今プロセスには信号があります。ハンドラが設定されていない場合、カーネルはシグナルに対してデフォルトのアクションをとります。

シグナルの基本的なタスクのリストがあります。たとえば、SIGSEGVはコアをダンプしてプロセスを終了します。 Michael Kerrisk は基本的な動作について説明します。私の考えでは、それはあなたがしたいと思います。

http://man7.org/linux/man-pages/man7/signal.7.html

カーネルには、これらすべての信号に対するプロセスの基本応答を処理するコードがあります。

カーネルが「self」シグナルを受け取ると(私たちが言うUNIXのバージョンによって異なります)、カーネルはパニックを引き起こし、クラッシュダンプを作成してユーザーに頭痛を与えます。 - あなたが望むものではありませんか?

関連情報