//===================================================== // Matt Kretchmar // A first attempt at reaping zombie children. // Problem: parent blocks until child has returned. //===================================================== #include /* symbolic constants */ #include /* system data types */ #include /* Errors */ #include /* Input/Output */ #include /* Wait for Process Termination */ #include /* General Utilities */ int main ( int argc, char *argv[] ) { pid_t pid; /* variable to hold process id */ int i; int n = 1; for (i = 0; i < n; i++ ) { pid = fork(); if ( pid == 0 ) { printf("%d child spawned\n",pid); sleep(1); exit(1); } } int status; while ( (pid = waitpid(-1,&status,0)) > 0 ) { printf("Parent waited for %d (status=%d)\n",pid,status); } return 0; }