+ -
当前位置:首页 → 问答吧 → 在uclinux中多进程vfork,fork是如何运作的?

在uclinux中多进程vfork,fork是如何运作的?

时间:2005-05-18

来源:互联网

写了几行代码,测试uclinux中的fork,vfork,主要想搞清程序执行流程,
同样的代码,但用fork与vfork执行多进程,程序流程不同,fork执行报错,
但网上资料说在uclinux中fork与vfork是相同的,
请教为什么会有这个差别?怎么找得到uclinux的资料?谢谢!      

作者: lgh517   发布时间: 2005-05-18

下面的代码为什么不进入子进程?
#include <stdio.h>
int main(void)
{
  int i,j,k=0,pid;
  printf("****** Test App By LGH!  in a.c  *******\n");
  pid=vfork();
  printf(" pid= %d\n",pid);
  if(pid=0){
     printf(" %d pid enter child\n",pid);
     for(i=0;i<10;i++){
        printf(" *** %d child in a.c  \n",i);usleep(100);
     }
     exit(0);
  }
  else{sleep(1);
     for(i=0;i<10;i++){
        printf(" === %d parent in a.c \n",i);usleep(9999);
     }
     wait();
  }
  wait();
  printf("\n run end! in a.c \n");
  exit(0);
}      

作者: lgh517   发布时间: 2005-05-18

vfork不是不进入,而是子进程运行后,父进程将会停止,直到子进程退出。还有
if(pid=0){    //你这是什么东东阿?
。。。。      

作者: flag   发布时间: 2005-05-18

谢谢,不好意思,老犯这种错误!
流程基本搞懂了,
uclinux中只能用vfork, 若用fork会返回-1
子进程调用exec执行aa后,aa与父进程并行执行.
子进程中若exec正确执行,则exec后面的代码不会执行.

问题: uclinux中多进程时,父子进程执行先后顺序是不是一定的? 即vfork后是子进程先执行还是父进程先执行? (看起来好象按代码先后顺序执行的)      

作者: lgh517   发布时间: 2005-05-18