回 帖 发 新 帖 刷新版面

主题:关于linux进程控制的问题

#include <stdio.h>
main( )
{
int p1,p2,i;
while((p1=fork( ))= = -1);          /*创建子进程p1*/
if (p1= =0)
  for(i=0;i<10;i++)
printf("daughter  %d\n",i);
else
{
                while((p2=fork( ))= = -1);   /*创建子进程p2*/
if(p2= =0)
                  for(i=0;i<10;i++)
                       printf("son  %d\n",i);
else
                  for(i=0;i<10;i++)
                       printf("parent  %d\n",i);
}
}
 

这段程序可能出现
parent,son,daugtrer三者交替出现的输出么
从语句上看不就是分支结构,满足哪个条件就执行对应的语句么?
难道for在运行中会被打断去执行其他语句?

回复列表 (共6个回复)

沙发

当然可能,实际上是有三个进程在运行不同的 for 循环

板凳

把for 循环改大一点或无限循环不是更容易看出吗?

3 楼

嗯 我改成500次终于观察到了
但是只有parent和daughter会交替
son还是连续的……

4 楼

输出会随着运行次数的不同而不同

另外,你的p1和p2最好设成pid_t类型

5 楼


fork  是创建一个进程,

wait  是回收(杀死)程进。

进程和程序是不同的概念,


我就知道这么多了。

6 楼

时间片

我来回复

您尚未登录,请登录后再回复。点此登录或注册