#include #include #include #include #include #include static void my_alarm(int signo) { struct passwd *rootptr; printf("in signal handler\n"); if ((rootptr = getpwnam("root")) == NULL) { fprintf(stderr, "ohoh!\n"); exit(1); } alarm(1); } int main() { struct passwd *ptr; signal(SIGALRM, my_alarm); alarm(1); for ( ; ; ) { if ((ptr = getpwnam("jschauma")) == NULL) { fprintf(stderr, "oh NOOO!\n"); exit(1); } if(strcmp(ptr->pw_name, "jschauma") != 0) { fprintf(stderr, "return value corrupted: pw_name = %s\n", ptr->pw_name); } } }