当前位置: 技术问答>linux和unix
创建父子进程,实现异步并发,这段代码对吗?
来源: 互联网 发布时间:2016-07-20
本文导语: 本帖最后由 evilhacker 于 2009-11-27 22:20:04 编辑 RT,我写了这样的代码,在ubuntu下运行,每次运行结果的顺序是一定的,按照道理,由于进程对CPU的抢占,应该是随机结果才对啊。 请各位指教~~ #include #include #include int mai...
请各位指教~~
#include
#include
#include
int main()
{
int cp1,cp2,i;
cp1=fork();
if(cp1==0)
{
printf("Child process 1 now printing.n");
}
else
{
cp2=fork();
if(cp2==0)
printf("Child process 2 now printing.n");
else
printf("Parent process is now printing.n");
}
return 0;
}
|
#include
#include
#include
int main (void)
{
int cp1,cp2;
cp1=fork();
if(cp1==0)
{
sleep(2);
printf("Child process 1 now printing.n");
}
else
{
cp2=fork();
if(cp2==0){
sleep(1);
printf("Child process 2 now printing.n");
} else
printf("Parent process is now printing.n");
}
return 0;
}
#include
#include
int main (void)
{
int cp1,cp2;
cp1=fork();
if(cp1==0)
{
sleep(2);
printf("Child process 1 now printing.n");
}
else
{
cp2=fork();
if(cp2==0){
sleep(1);
printf("Child process 2 now printing.n");
} else
printf("Parent process is now printing.n");
}
return 0;
}
|
我在Fedora下试验了下,发现顺序是随机的...没有固定
|
父子进程的运行取决于操作系统的调度。这两个进程是一样的优先级,谁先运行,主要取决于操作系统的调度算法。父子进程是有竞争关系的,你可以循环printf,循环的次数大点,这样可以看到他们交替运行。
|
vfork如你所说,fork是二者同时进行。
|
vfork才是这样的
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。