dimi67
asked on
2 children , 2 jobs with execv
a parent process creates 2 children.
child1: ls
child2: ask for 2 numbers, and add them
but output is not what I really expect...
child1: ls
child2: ask for 2 numbers, and add them
but output is not what I really expect...
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
int pid1, pid2;
char* args[] = {"/bin/ls",(char*)0};
p1=fork();
if(p1!=0){
printf("\n parent");
wait(0);
}
else{//1st child
p2=fork();
if(p2!=0){//1st child
printf("\n result of ls is..\n ");
execv("/bin/ls",args);
wait(0);
exit(0);
}
else{//2nd child
printf("\n give 2 ints separ. with space \n");
scanf("%d %d",&a,&b);
c=a+b;
printf("\n summ of the 2 numbers is: %d\n",c);
exit(0);
}//end 2nd child
}//end 1st child
return 0;
}//end main
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
o The child process has its own copy of the parent's descriptors.
These descriptors reference the same underlying objects, so
that, for instance, file pointers in file objects are shared
between the child and the parent, so that an lseek(2) on a
descriptor in the child process can affect a subsequent read or
write by the parent.
These descriptors reference the same underlying objects, so
that, for instance, file pointers in file objects are shared
between the child and the parent, so that an lseek(2) on a
descriptor in the child process can affect a subsequent read or
write by the parent.
ASKER
And why dup it?