The Gateway to Computer Science Excellence
0 votes
35 views
Explain the circumstances under which which the line of code marked printf("LINE J") in following program will be reached.

#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
pid t pid;
/* fork a child process */
pid = fork();
if (pid < 0) { /* error occurred */
fprintf(stderr, "Fork Failed");
return 1;
}
else if (pid == 0) { /* child process */
execlp("/bin/ls","ls",NULL);
printf("LINE J");
}
else { /* parent process */
/* parent will wait for the child to complete */
wait(NULL);
printf("Child Complete");
}
return 0;
}
in Operating System by Boss (42.4k points) | 35 views

1 Answer

0 votes
When child process executes execlp() system call then if the execution is successful then the memory space assigned to the child process  gets replaced by the process which is given as the parameter to the execlp() system call. In that case printf("LINE J") line would never be reached because it is over written by the new process. But if the execution of execlp() function is unsuccessful then there will be no replacement and printf("LINE J")  Will be executed.
by (205 points)

Related questions

Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true
50,741 questions
57,253 answers
198,069 comments
104,710 users