红联Linux门户
Linux帮助

LINUX 系统进程fork()疑问?

发布时间:2009-08-10 14:35:37来源:红联作者:beautifulwyl
大家好:
#include
#include
#include
#include
#include
#include
#include
#include
main(void)
{
int a;
for(a=0;a<2;a++)
{
printf("\niiiiiiiiiiiiiiiiiiiiiiiii\n");}
int pid=fork();
for(a=0;a<2;a++)
{
printf("\nxxxxxxxxxxxxxxxxxxxx\n");
}
if (pid<0)
{
printf("error!\n");
exit(0);
}
else
if(pid>0)
{
printf("this is child:%d\n",pid);
}
else
{
int i=0;
for (;i<2;i++)
{printf("\nxxyou are a dog!xxx\n");
}
}
}


运行结果:

[eternel@localhost learn]$ ./a.out

iiiiiiiiiiiiiiiiiiiiiiiii

iiiiiiiiiiiiiiiiiiiiiiiii

xxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxx

xxyou are a dog!xxx

xxyou are a dog!xxx

xxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxx
this is child:19116



执行的流程 是怎么个顺序! 快晕死我拉!!!!!!!!
文章评论

共有 3 条评论

  1. conqueror 于 2010-04-08 23:54:39发表:

    if(pid>0)
    {
    printf("this is child:%d\n",pid);
    }
    楼主搞错了,pid>0时,说明是父进程
    这条语句创建子进程:int pid=fork();子进程创建后,从这条语句下面开始执行.
    而下面的语句执行时,父子进程执行顺序由系统进程调度决定,故次序不确定.

  2. beautifulwyl 于 2009-08-10 23:13:50发表:

    2# beautifulwyl


    解决了 ! 补缺定的!大家最好不要 总是钻牛计较!应该是竞争机制吧!

  3. beautifulwyl 于 2009-08-10 15:08:06发表:

    fork()是创建系统进程的函数吧!
    一个进程至少被一个程序拥有
    一个线程至少被一个进程拥有
    那么上面这个程序的进程是什么名称 ,它新创建的又一个进程在那里又叫什么名称?