Expand the code so that the parent creates two children and then waits until both children and then waits until both children exit.
Note: The code might have something to do in UNIX.
Expand your solution further so the program accepts an integer as a command line argument. The program then creates that number of child processes and assigns each child a ranodm number of seconds to sleep. Finally, the parent processes report as each child exits.
Note: The line printf("before: mypid is %d\n", getpid()); has an error: implicit declaration of function 'int wait(...)'
Please advise.
Thanks.
Note: The code might have something to do in UNIX.
Expand your solution further so the program accepts an integer as a command line argument. The program then creates that number of child processes and assigns each child a ranodm number of seconds to sleep. Finally, the parent processes report as each child exits.
Code:
#include <stdio.h>
#define DELAY 2
main ()
{
int newpid;
void child_code(), parent_code();
printf("before: mypid is %d\n", getpid());
if ( (newpid = fork()) == -1 )
perror("fork");
else if ( newpid == 0 )
child_code(DELAY);
else
parent_code(newpid);
}
void child_code(int delay)
{
printf("child %d here. will sleep for %d seconds\n", getpid(),
delay);
sleep(delay);
printf("child done. about to exit\n");
exit(17);
}
void parent_code(int childpid)
{
int wait_rv;
wait_rv = wait(NULL);
printf("done waiting for %d. Wait returned:%d\n", childpid,
wait_rv);
}
Please advise.
Thanks.
Comment