Cとシステムプログラミングを学んでいます。3 つのシグナル ハンドラを作成する必要があります。これらが作成されると、プログラムは SIGUSR1、SIGUSR2、SIGINT の順序でシグナルを自分自身に送信する必要があります。以下は私のコードです。動作していません (たとえば、ターミナルでコンパイルすると、./prog1 と入力して control-C をクリックすると、プログラムは「Caught SIGINT, Exiting」と出力して終了する必要があります。エラーは発生しませんでしたが、返されるだけです。何もない次の行へ. 誰かが見て、私を正しい方向に向けることができますか? 助けてくれてありがとう!
#include <signal.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
static void sigHandler_sigusr1(int sig)
{
//sig contains the signal number that was received
printf("Caught SIGUSR1\n", getpid());
kill(getpid(), SIGUSR1);
}
static void sigHandler_sigusr2(int sig)
{
//sig contains the signal number that was received
printf("Caught SIGSR2\n", getpid());
kill(getpid(), SIGUSR2);
}
static void sigHandler_sigint(int sig)
{
//sig contains the signal number that was received
printf("Caught SIGINT, Exiting\n", getpid());
kill(getpid(), SIGINT);
exit(EXIT_SUCCESS);
}
int main(int argc, char *argv[])
{
if (signal(SIGUSR1, sigHandler_sigusr1) == SIG_ERR)
printf("Unable to create handler for SIGUSR1\n");
if (signal(SIGUSR2, sigHandler_sigusr2) == SIG_ERR)
printf("Unable to create handler for SIGUSR2\n");
if (signal(SIGINT, sigHandler_sigint) == SIG_ERR)
printf("Unable to create handler for SIGUSR1\n");
return 0;
}