プログラムを終了する前に C 命令を実行するために、プログラムの kill シグナルを検出したいと考えています。私のプログラムはLinuxで実行されています
それは可能ですか?はいの場合、どうすればできますか?
を使用してシグナルハンドラを登録できますsigaction()
。SIGKILL
orを処理できないことに注意してくださいSIGSTOP
。
いいえ、SIGKILL は処理できません。CTRL+C をキャッチしたい場合は、次のようにします。
#include <stdio.h>
#include <signal.h>
volatile sig_atomic_t stop;
void
inthand(int signum)
{
stop = 1;
}
int
main(int argc, char **argv)
{
signal(SIGINT, inthand);
while (!stop)
printf("a");
printf("exiting safely\n");
return 0;
}
トリックを行います
SIGKILL または SIGTERM がプロセスに送信された場合、シグナルをマスクまたは無視することはできません。処理およびマスクできるその他のシグナル。