fork getpid 返回值
C/C++ code
int main(void)
{
pid_t pid;
if ((pid = fork()) < 0)
err_sys("fork error");
else
if (pid == 0)
{
printf("pid : %d\n", pid);
printf("child process pid : %d\n", getpid());
}
else
{
printf("pid : %d\n", pid);
printf("parent process pid : %d\n", getpid());
}
exit(0);
}
pid : 11784
parent process pid : 11783
pid : 0
child process pid : 11784
子进程用fork和getpid得到为什么不一样?
------解决方案--------------------父进程用fork和getpid得到也不一样。
fork在父进程里返回新生成的子进程的pid
在子进程里返回0
getpid返回的是调用进程(或者说当前进程)的pid
------解决方案--------------------lz要man fork
子进程拷贝父进程的副本,但在子进程之中fork的返回值就是0,规定如此。
------解决方案--------------------fork()函数比较特别,调用一次,两次返回(一次是在子进程中,一次是在父进程中)。
对于父进程,其返回值是新创建的子进程的进程ID;
对于子进程,其返回值是0;
getpid()返回调用进程自己的进程ID。