В C Linux, есть ли способ подождать сигнала типа SIGUSR1
и SIGUSR2
без петли?
Для примера в этом коде я жду SIGUSR1
или SIGUSR2
, чтобы напечатать сообщение, но пока я хочу, я делаю пока true ....
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void signal_callback_handler(int signum)
{
printf("Caught signal %d\n",signum);
}
int main()
{
signal(SIGUSR1, signal_callback_handler);
signal(SIGUSR2, signal_callback_handler);
while(1)
{
printf("Program processing stuff here.\n");
sleep(1);
}
return EXIT_SUCCESS;
}
Как я могу ждать и ничего не делать (не делать, пока true), пока не придет SIGUSR1
или SIGUSR2
?
Например:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void signal_callback_handler(int signum)
{
printf("Caught signal %d\n",signum);
}
int main()
{
signal(SIGUSR1, signal_callback_handler);
signal(SIGUSR2, signal_callback_handler);
printf("this line happned after signal arrived \n ");
return EXIT_SUCCESS;
}