У меня проблемы с этим простым упражнением. Вот код:C++ - fork() и его возвращаемое значение
int main(int argc, char** argv) {
pid_t pid1,pid2,pid3;
int a=5,b=4,c=3,retval,retval2;
pid1=fork();
if(pid1==0){
pid3=fork();
if(pid3==0)
exit(a);
else if(pid3>0){
waitpid(pid2,&retval2,0);
cout<<WEXITSTATUS(retval2);
}
}
else if(pid1>0){
pid2=fork();
if(pid2==0){
cout<<"CIAO";
exit(b);
}
else if(pid2>0){
waitpid(pid3,&retval,0);
cout<<WEXITSTATUS(retval);
}
}
return 0; }
Как вы можете видеть, это не так сложно. Все, что я хочу сделать, это pid2 (отец), чтобы напечатать возвращаемое значение pid3 (son) и pid3 (отец), чтобы напечатать возвращаемое значение pid2 (son). Любой совет? Я был бы очень признателен.
Ряд вещей не правы: переменные будут скопированы в их текущем состоянии, но обновления этих переменных не будет распространяться через (например, изменения в 'pid2' не будут видны другим процессам, поэтому ваш' wait (pid2) 'не будет работать. Кроме того, даже если бы это сработало, это было бы условие гонки в любом случае. – slugonamission