LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 755|回复: 4

fork后是不是马上进入子进程的执行空间?

[复制链接]
发表于 2003-11-26 20:41:54 | 显示全部楼层 |阅读模式
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int k=0;

int main()
{
  pid_t child;
  int status;
  if((child=fork())==-1)
    {
      printf("创建子进程失败\n");
      exit(1);
    }
  else if(child==0)
    {
      sleep(10);
      k++;
      printf("子进程中k=%d\n",k);
      exit(1);
    }
  wait(&status);
  k=k+2;
  printf("父进程中k=%d\n",k);
}
执行结果是
子进程中k=1
父进程中k=2

如果把判断条件改成else if(child>0)则
运行结果是
父进程中k=2
子进程中k=1

有点晕了。






 楼主| 发表于 2003-11-26 21:05:58 | 显示全部楼层
只要判断fork函数的返回值,就知道自己是处于父进程还是子进程中。
fork()返回2个值
是不是这个意思?
发表于 2003-11-27 00:43:01 | 显示全部楼层
fork返回两个值?
fork的返回值,父进程得到的是子进程号,子进程得到的是0,根据这个来判断当前是父进程还是子进程了
发表于 2003-11-27 00:45:02 | 显示全部楼层
>执行结果是
>子进程中k=1
>父进程中k=2

>如果把判断条件改成else if(child>0)则
>运行结果是
>父进程中k=2
>子进程中k=1

这不是一样的么,哈
 楼主| 发表于 2003-11-27 08:24:47 | 显示全部楼层
这个我搞清楚了,是根据大于0还是等于0来判断是父进程还是子进程。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表