Question: Implement in C++ - Operating System Use fork and one of the exec (e.g. execv, execvp) calls to issue the command and wait until the

Implement in C++ - Operating System

Use fork and one of the exec (e.g. execv, execvp) calls to issue the command and waituntil the command is completed. [NOTE: To see how these work, type man 3 exec or man 3 wait. The man pages also tell you what header files to include.] If a -1 is returned from fork or exec, an error occurred. Use perror to print the command, error and exit. Print out the arguments in a for-loop before forking and executing the command. Print out the process id of the parent and child. You have to use command-line arguments. In the past, int main() had an empty parameter list. There is another version that allows programs to access command-line arguments (calling a program with options on the command line). This is int main(int argc, char* argv[]).

Expected Output:

[a@edu lab1]$ lab1 ls -l lab1 ls -l Child process pid is 6203 total 30 -rwxr-xr-x 1 a staff 8576 Sep 13 09:24 lab1 -rw-r--r-- 1 a staff 636 Sep 13 09:22 lab1.cpp -rw-r--r-- 1 a staff 11190 Sep 13 09:15 lab1.html -rw-r--r-- 1 a staff 523 Sep 13 08:59 linux.txt lab1 ls -l Parent process pid is 6202 
[a@edu cs3595]$ lab1 lss -l lab1 lss -l Child process pid is 7296 lss: No such file or directory lab1 lss -l Parent process pid is 7295

What I have so far:

#include #include

#include #include

#include

using namespace std;

int main(int argc, char *argv[])

{ for (int i=0; i

{ cout<

pid_t pid = fork();

if (pid <0) //error occurred

{ perror("No such file or directory");

return 1; }

else if (pid == 0) //child process{

printf("Child process pid is (%d) ", getpid());

execvp("ls", argv);

//printf("Child process pid is (%d) ", getpid()); }

else { //parent process

wait(NULL);

for(int i=0; i

{ cout<

printf("Parent process pid is (%d) ", getppid()); }

I have an error with execvp cannot access "ls" when doing ls -l

My output:

[l@edu lab1]$ lab1 ls -1

lab1 ls -1 Child process pid is (1072581)

lab1: cannot access 'ls': No such file or directory

lab1 ls -1 lab1 ls -1 Parent process pid is (1065733)

I cannot access the file or directory when doing ls -l. I don't know what's the problem. Help!

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!