Unix 进程问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 18:31:38
#include <stdio.h>
main()
{ int p,q,i;
p=fork();
if(p>0)
{
q=fork();
if(q==0)
{for(i=1;i<=5;i++)
printf("a");
}
else
{
for(i=1;i<=5;i++)
printf("b\n");
}
}
else
{
for(i=1;i<=5;i++)
printf("c\n");
}
}
运行后答案为cccbcabcabababa,这个更不理解了,请详细讲述这是怎么运行的

说明下,我也不是特别明白。
p=fork();//创建子进程p
if(p>0) //此处为父进程
{
q=fork();
if(q==0) //父进程生成子进程q,子进程q执行输出'a'
{for(i=1;i<=5;i++)
printf("a");
}
else //父进程体,输出'b'
{
for(i=1;i<=5;i++)
printf("b\n");
}
}
else //子进程p,输出'c‘
{
for(i=1;i<=5;i++)
printf("c\n");
}
程序中具体先执行哪个进程,是根据系统的进程调度策略决定的。
刚执行了下,结果
ccccccaaaaabbbbb。
至于为什么你的输出是错乱的,有可能和printf的实现还有关系。