Fork函数不返回0值?

时间:2013-11-30 21:53:13

标签: c shell unix fork pid

当我在main中调用fork()时,我没有得到子进程id的0值。 我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(){


    pid_t pid = fork();
    printf("pid in child=%d and parent=%d\n",getpid(),getppid());       
    wait(NULL);

}

输出:

pid in child=15690 and parent=11593
pid in child=15691 and parent=15690

问题出在哪里?据我所知,我应该在第二行中为子进程获得0值。

2 个答案:

答案 0 :(得分:4)

您实际上应该在pid声明中使用printf的值。

分叉流程的fork()结果为零,但getpid()获取的流程ID不为零。

答案 1 :(得分:1)

$ man getpid

  

getpid()返回调用进程的进程ID。

$ man fork

  

返回值
  成功时,子进程的PID在父进程中返回,并在子进程中返回0。

您打印的内容是ps命令中的真实PID