#include #include #include /*exit()*/ #include /*sleep()*/ /*Zähler*/ volatile sig_atomic_t count = 0; /*Signal-Handler*/ void handler(int sig, siginfo_t* info, void* unused){ /*Signalnummer ausgeben*/ printf("Got signal %d.\n", info->si_signo); /*Signal code auslesen*/ if(info->si_code==SI_USER) puts("The signal was send by kill()\n"); count++; } int main(int argc, char* argv[]){ /*Struct fuer sigaction()*/ struct sigaction act; /*Dieses flag zeigt an, dass der erweiterte Signal-Handler verwendet werden soll*/ act.sa_flags = SA_SIGINFO; /*Handler-Funktion setzen*/ act.sa_sigaction = handler; /*Handler fuer SIGUSR1 setzen*/ if(sigaction(SIGUSR1, &act, NULL)<0) exit(1); /*...*/ while(1) { sleep(5); printf("%d\n", count); if(count == 2) break; } return 0; }