Question
fork.c #include #include #include int main() { pid_t pid; pid = fork(); if(pid myls.c #include #include #include #include int main() { pid_t pid; pid =
fork.c
#include
int main() { pid_t pid;
pid = fork(); if(pid
myls.c #include
int main() { pid_t pid;
pid = fork(); if(pid
myshell.c
/* This example is stolen from Dr. Raju Rangaswami's original 4338 demo and modified to fit into our lecture. */
#include
#define MAX_ARGS 20 #define BUFSIZ 1024
int get_args(char* cmdline, char* args[]) { int i = 0;
/* if no args */ if((args[0] = strtok(cmdline, " \t ")) == NULL) return 0;
while((args[++i] = strtok(NULL, " \t ")) != NULL) { if(i >= MAX_ARGS) { printf("Too many arguments! "); exit(1); } } /* the last one is always NULL */ return i; }
void execute(char* cmdline) { int pid, async; char* args[MAX_ARGS];
int nargs = get_args(cmdline, args); if(nargs
if(!strcmp(args[0], "quit") || !strcmp(args[0], "exit")) { exit(0); }
/* check if async call */ if(!strcmp(args[nargs-1], "&")) { async = 1; args[--nargs] = 0; } else async = 0;
pid = fork(); if(pid == 0) { /* child process */ execvp(args[0], args); /* return only when exec fails */ perror("exec failed"); exit(-1); } else if(pid > 0) { /* parent process */ if(!async) waitpid(pid, NULL, 0); else printf("this is an async call "); } else { /* error occurred */ perror("fork failed"); exit(1); } }
int main (int argc, char* argv []) { char cmdline[BUFSIZ]; for(;;) { printf("COP4338$ "); if(fgets(cmdline, BUFSIZ, stdin) == NULL) { perror("fgets failed"); exit(1); } execute(cmdline) ; } return 0; }
1. Carefully study the examples provided: fork.c, myls.c, myshell.c, etc. You need to know how they work in order for you to finish this assignment; the examples will also get you prepared for 2. Write a program called minishell that creates two child processes: one to execute 'ls' and the other to execute 'sort. After the forks, the original parent process waits for both child processes to finish before it terminates. The standard output of 'ls' process should be piped to the input to the 'sort' process. Make sure you close the unnecessary open files for the three processesStep by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started