StudyingUnixInterface/10/signal/recall.c

33 lines
632 B
C
Raw Permalink Normal View History

2021-01-11 10:00:36 +00:00
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <stdlib.h>
#include <pwd.h>
#include <string.h>
static void my_alarm(int signo) {
struct passwd *rootptr;
printf("in signal handler signo = %d\n", signo);
if ((rootptr = getpwnam("root")) == NULL) {
printf("getpwnam(root) error");
}
alarm(1);
}
int main(void) {
struct passwd *ptr;
signal(SIGALRM, my_alarm);
alarm(1);
for(;;) {
if((ptr = getpwnam("eric")) == NULL)
printf("getpwnam(eric) error");
if(strcmp(ptr->pw_name, "eric") != 0) {
printf("return value corrupted, pw_name = %s\n", ptr->pw_name);
}
}
}