Navigationskarta Insitutitionen för Datavetenskap Umeå Universitet

Kodexempel F12


/* signal.h, stdio.h, unistd.h */

int sigintflag = 0;

void handler(int signo)
{
  sigintflag = 1;
}

int main(void)
{
  if (signal(SIGINT, handler) == SIG_ERR) ...
  while (1) {
    sleep(1);
    if (sigintflag) {
      puts("Bye bye!");
      return 0;
    }
  }
}


#include <signal.h> #include <stdio.h> #include <unistd.h> void handler(int signo) { write(STDERR_FILENO,"Please be patient...", 20); } int main(void) { ... signal(SIGINT, handler); /* Important processing here */ signal(SIGINT, SIG_DFL); /* Less important code here */ }
/* signal.h, stdio.h, unistd.h */ void sighand(int signo) { write(STDOUT_FILENO, "Handled SIGINT\n", 14); } int main(void) { sigset_t newmask, oldmask, pendmask; signal(SIGINT, sighand); sigemptyset(&newmask); sigaddset(&newmask, SIGINT); sigprocmask(SIG_BLOCK, &newmask, &oldmask); sleep(5); sigpending(&pendmask); if (sigismember(&pendmask, SIGINT)) puts("\nSIGINT pending"); sigprocmask(SIG_SETMASK, &oldmask, NULL); puts("\nSIGINT unblocked"); sleep(5); return 0; }
[an error occurred while processing this directive]