Я бы хотел создать тупик после дауна (& s);
printf ("c s% d \ n", s);
Предполагается, что застрять после (& s); printf ("c s% d \ n", s); и я не могу понять, почему нет. Поэтому я хотел бы попросить о помощи.
void down(int *s){
while(*s<0 || *s==0){;}
*s=*s-1;
}
void up(int *q){
*q=*q+1;
}
int main(){
int p,pid;
int s=1,q=1;
if ((pid = fork()) == 0){
down(&q);
printf("c q %d\n",q);
sleep(1);
down(&s);
printf("c s %d\n",s);
sleep(1);
printf("child\n");
up(&q);
printf("c q %d\n",q);
sleep(1);
up(&s);
printf("c s %d\n",s);
sleep(1);
}
else{
down(&s);
printf("p s %d\n",s);
sleep(1);
down(&q);
printf("p q %d\n",q);
sleep(1);
printf("parent\n");
up(&s);
printf("p s %d\n",s);
sleep(1);
up(&q);
printf("p q %d\n",q);
sleep(1);
}
return 0;
}