首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

fork getpid 返回值解决办法

2012-08-01 
fork getpid 返回值C/C++ codeint main(void){pid_tpidif ((pid fork()) 0)err_sys(fork error)el

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

探讨
子进程用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);
……

[解决办法]
lz要man fork

子进程拷贝父进程的副本,但在子进程之中fork的返回值就是0,规定如此。

[解决办法]
fork()函数比较特别,调用一次,两次返回(一次是在子进程中,一次是在父进程中)。
对于父进程,其返回值是新创建的子进程的进程ID;
对于子进程,其返回值是0;

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

热点排行