Register Now

Login

Lost Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Login

Register Now

Welcome to All Test Answers

C program to execute multiple Unix commands in parallel

Lab 6 – exec()
Part I
Write a C program called executebash.c. It prints out on the screen
EXAM! EXAM! EXAM!
and then forks a child to execute a bash script named mybash. This mybash program prints out on
the screen
STUDY! STUDY! STUDY!
Part II
Write a C program to execute multiple Unix commands in parallel.
• The number of Unix commands is not fixed.
• There is no communication among the Unix commands.
• The Unix commands are given as command line arguments.
• For simplicity, you can assume that each Unix command has exactly one argument
except that the last one can have either no argument or one argument.
For example,
>>>>> miniminishell cat openfile.c ls –l ps
includes three Unix commands: cat with one argument openfile.c, ls with one argument –l, and
ps with no argument.
For each Unix command, use a separate process to execute it. You need to print out each process
id.

Answer:

PART 1

executebash.c

#include<unistd.h>
#include<stdio.h>
#include<sys/wait.h>
int main(){
	int n;
	printf("EXAM EXAM EXAM!\n");
	if(fork() == 0){
		execlp("./mybash.sh","mybash.sh", "echo", (char*)NULL);
	}
	else{
		wait(&n);
	}
}

mybash

#!/bin/bash 
echo "STUDY! STUDY! STUDY!"

PART 2

openfile.c

#include<unistd.h>
#include<stdio.h>

int main(){
	printf("EXAM EXAM EXAM!\n");
	if(fork() == 0){
		execlp("./mybash.sh","mybash.sh", "echo", (char*)NULL);
	}
}

miniminishell.c

#include<unistd.h>
#include<stdio.h>
#include<sys/wait.h>
int main(int argc, char *argv[]){
	int n;
	int pid;
	for(int i=1;i<argc;i+=2){
		pid=fork();	
		if(pid == 0){
			if(argc >  1){	
				printf("Process ID = %d\n", getpid());
				execlp(argv[i],argv[i],argv[i+1], (char*)NULL);
			}
		}
		 else if(pid>0){
			wait(&n);
		 }
	 	else{	 
			printf("exex failed ");
		}		
	}
	return 0;
}


About

Leave a reply

Captcha Click on image to update the captcha .

error: Content is protected !!