Я изучаю C и системное программирование. Мне нужно создать три обработчика сигналов, и как только они будут созданы, программа должна отправить сигналы себе в следующем порядке: SIGUSR1, SIGUSR2 и SIGINT. Ниже мой код. Он не работает (например, когда я компилирую в терминале - я печатаю ./prog1 и нажимаю control-C, программа должна печатать «Caught SIGINT, Exiting» и выйти. Я не получал никаких ошибок, но он просто возвращает к следующей строке с ничего. Может кто-то посмотреть и мне точку в правильном направлении? Большое вам спасибо за вашу помощь!Использование сигнала, обработчика, kill и getpid в C
#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;
}
Вы попробовали время (1); до возвращения? – Alexis
А также добавьте% d для печати getpid(). – Jeyaram
«* ... программа должна посылать сигналы себе в следующем порядке: ... *" чтобы она выполнялась так, как это 'main()' должна что-то сделать, чтобы инициировать это, в настоящее время это не так. – alk