Показване на информация за сигналите

  • Дефинирайте функцията за обработка на сигнали SIGTERM
  • Иницирайте сигнално множество, като само SIGTERM е изключен
  • Задайте обработчик на събития за SIGTERM
  • Отпечатайте идентификатора на процеса (pid)
  • Изчакайте и изведете подходящи съобщения за входящите сигнали
  • Ако възникне грешка преустановете програмата

siginfo.c

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include <unistd.h>
void term_handler(int sig) {
  printf("Signal %i - %s\n", sig, sys_siglist[sig]);
  exit(EXIT_SUCCESS);
}
int main(int argc, char ** argv) {
  int sig;
  struct sigaction sa;
  sigset_t sset;
  sigfillset(&sset);
  sigdelset(&sset, SIGTERM);
  sigprocmask(SIG_SETMASK, &sset, 0);
  sa.sa_handler = term_handler;
  sigaction(SIGTERM, &sa, 0);
  printf("My pid is %i\n", getpid());
  printf("Waiting...\n");
  while(!sigwait(&sset, &sig)) {
    printf("Signal %i - %s\n", sig, sys_siglist[sig]);
    printf("%s\n", strsignal(sig));
  }
  return EXIT_FAILURE;
}

results matching ""

    No results matching ""