Step-by-step explanation:
To understand how this program is working let us print the variable value at different stages of the program so that we can understand how it is working.
Intitally, value=10 when it was declared.
Then we added 5 and it become value=15
then we used fork() function which creates a parent(orignal) and child(duplicate)
When fork() succeeds it returns the child pid to parent and returns 0 to the child. As you can see (pid > 0) condition is always true therefore the parent pid value becomes 35 ( 15+20) and the child pid value becomes 0.
#include <stdio.h>
#include <unistd.h>
int main( ) {
int value = 10;
printf("%d\\",value);
int pid;
value += 5;
printf("%d\\",value);
pid = fork( );
printf("%d\\",pid);
if (pid > 0 )
{
value += 20;
}
printf("%d\\",value);
return 0;
}
Output:
10 (initial value)
15 (modified value)
5343 (pid when fork is used)
35 (final modified value)
0 (child value)
15 (the parent value when fork was used)