/* * SPDsoft * * Simple signal example */ #include #include #include #include #include #include void handler(int i, siginfo_t *sip, ucontext_t *uap); int main ( int argc, char *argv[]); /* Globals */ #define MY_SIG SIGINT char *progname; int count=0; struct sigaction act void handler(int i, siginfo_t *sip, ucontext_t *uap) { /* set MY_SIG again */ if ( -1 == sigaction(MY_SIG, &handler, NULL)) perror(sigaction); printf("%s: Hola! (signal %d from %d)\n", progname, i, sip->si_pid); fflush(stdout); count ++; return; } int main ( int argc, char *argv[]) { int i; unsigned int s; void (*sys)(int); if (argc != 3) { printf ("Uso: %s nloops sleep\n", argv[0]); exit(1); } progname = argv[0]; s=atoi(argv[2]); fprintf(stderr,"%s: %p\n", argv[0], sys); if ( -1 == sigaction(MY_SIG, &handler, sys)) { perror(sigaction); } for (i = atoi(argv[1]); i > 0; i--) { sleep(s); } puts("bye"); return 0; }