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 : 11784parent process pid : 11783pid : 0child process pid : 11784子进程用fork和getpid得到为什么不一样?
[解决办法]
父进程用fork和getpid得到也不一样。
fork在父进程里返回新生成的子进程的pid
在子进程里返回0
getpid返回的是调用进程(或者说当前进程)的pid
[解决办法]
lz要man fork
子进程拷贝父进程的副本,但在子进程之中fork的返回值就是0,规定如此。
[解决办法]
fork()函数比较特别,调用一次,两次返回(一次是在子进程中,一次是在父进程中)。
对于父进程,其返回值是新创建的子进程的进程ID;
对于子进程,其返回值是0;
getpid()返回调用进程自己的进程ID。