Обработка на сигнал
Дефинирайте функцията за обработка на сигнали SIGTERM. Иницирайте сигнал, като само SIGHUP е включен и блокирайте обработката на сигнали. Задайте обработчик на събития за SIGTERM. Отпечатайте идентификатора на процеса (pid). Влезте в безкраен цикъл.
signal-handler.c
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
// Signal Handler
void signal_handler(int i)
{
printf ("Terminating\n");
exit(EXIT_SUCCESS); // 1
}
// Main Program
int main(int argc, char ** argv)
{
// Signal Structure Initialization
struct sigaction sa;
sigset_t newset;
sigemptyset(&newset);
sa.sa_flags = 0;
sa.sa_handler = signal_handler;
sigaction(SIGINT, &sa, NULL); // Ctrl+C
// Print
printf("My pid is %i\n", getpid());
printf("Waiting...\n");
// Forever
while(1) sleep(1);
return EXIT_FAILURE; // -1
}
Компилирайте и стартирайте програмата:
gcc signal-handler.c -o signal-handler
./signal-handler
Last updated
Was this helpful?