Describe the control flow of this program and the possible output it can produce.
(Assume fork and signal calls succeed. This is not checked for brevity of the code example.)
1 2 pid_t pid; 3 4 void handler1(int sig) { 5 printf("zip"); 6 fflush(stdout); /* Flushes the printed string to stdout */ 7 kill(pid, SIGUSR1); 8 } 9 void handler2(int sig) { 10 printf("zap"); 11 exit(0); 12 } 13 int main() { 14 signal(SIGUSR1, handler1); 15 if ((pid = fork()) == 0) { 16 signal(SIGUSR1, handler2); 17 kill(getppid(), SIGUSR1); 18 while(1) {}; 19 } 20 else { 21 pid_t p; int status; 22 if ((p = wait(&status)) > 0) { 23 printf("zoom"); 24 } 25 } 26 return 0; 27 }