当我在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值。
答案 0 :(得分:4)
您实际上应该在pid
声明中使用printf
的值。
分叉流程的fork()
结果为零,但getpid()
获取的流程ID不为零。
答案 1 :(得分:1)
$ man getpid
getpid()返回调用进程的进程ID。
$ man fork
返回值
成功时,子进程的PID在父进程中返回,并在子进程中返回0。
您打印的内容是ps命令中的真实PID