Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a program using C to generate a binary tree of processes. The input to the

ID: 3672635 • Letter: W

Question

Write a program using C to generate a binary tree of processes. The input to the program includes the number of levels in the tree. The maximum number of levels is 5, but the program should work for a general case of any number. Use command line arguments.
Example of a program run is as follows:
ecs416lin213.cecs.csuld.edu:1>p1 4

Please show output listing using N = 3. Draw a tree diagram showing the process IDs in circles.

Starting point:

/**************************************************************************/
/* PROGRAM: lab2.c */
/* DESCRIPTION: This program generates a chain of processes */
/* using fork(). The number of processes n is a command line argument. */ /* Each process sleeps for a random time less than 10 seconds then prints out */
/* process ID, parent ID, and child ID */
/**************************************************************************/
# include <stdio.h>
# include <stdlib.h>
# include <sys/types.h>
# include <unistd.h>
int main(int argc, char *argv[])
{
int i, m, n, sleeptime, seed;
pid_t childpid;
if (argc !=2) {
printf(" Usage: %s processes ", argv[0]);
exit(1);
}
n = atoi(argv[1]); m = 10;
childpid = 0;
for (i=0; i<n;i++)
if (childpid = fork()) break;
if (childpid == -1) {
perror (" The fork failed ");
exit(1);
}
printf(" %d: process ID:%6ld parent ID:%6ld child
ID:%6ld",i, (long)getpid(), (long)getppid(), (long)childpid);
seed = (int)(getpid() + childpid);
8
srand(seed);
/* since each process has a different childpid, using the childpid
as the seed number will restart the random function.
Therefore, each process will have a different sleeptime
*/
sleeptime = rand()%m;
printf (" sleep = %d ", sleeptime);
sleep(sleeptime);
exit(0);
}

Level Procs Parent Child 1 Child 2 8 3608 35743609 3610 3610 26083612 3613 3609 3608 361 3614 3612 3610 3616 3617 3614 3609 3620 3621 3611 3609 3615 3622 3613 3610 3618 3619 3620 36143629 3630 3622 3611 3633 3634 3615 3611 3623 3635 3616 3612 3624 3625 3617 3612 3626 3636 3618 3613 3627 3637 3619 36133628 3638 3621 3614363 3632 2

Explanation / Answer

This program will work for any number of process by just passing the command line argument without modification of the program.
but just pass the only one value after the program name i.e n value..
Exmaple See the : p 5

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote