我在代码中尝试做的是拥有一个父进程,它会分叉两个子进程。我就是这样做的:
pid = fork();
if(pid != 1)
pid1 = fork();
我要做的下一件事是使用信号量在进程之间(从子进程到其他子进程,按顺序)切换进程。 即子过程会说A,另一个孩子会说B,父母会说C,孩子会说D,依此类推。
我的两个问题是:
假设您在信号量中调用sem_wait(sem)
,并且进程会阻止它。然后继续前进,另一个进程最终调用sem_post(sem)
。 sem_wait
之后的代码是否会在sem_post
之后立即执行? ie 执行"跳回"到sem_wait
之后的代码,即使它没有来到下一个"在该计划?
if(stuff){
a;
sem_wait(sem);
b;
}
c;
sem_post(sem);
b
即使在"之前也会执行{#1}}这篇文章是以文字方式提出来的吗?
if
语句(if(pid) != 0
,if(pid() == 0
和if(pid1 == 0)
进行检查,假设父级的第一个分叉的返回值为0且子级将具有他们各自的叉子零,但这不起作用。我检查了他们的PID和PPID,他们到处都是。)感谢所有帮助,谢谢