当前位置:  开发笔记 > 编程语言 > 正文

其他进程中的PID错误

如何解决《其他进程中的PID错误》经验,为你挑选了1个好方法。

看看这段代码

int main(int argc, char **argv) 
{
int pid[3];
int i,tmp;
pid[0]=getpid();


if((tmp=fork()) == 0) 
{
    pid[2]=getpid();
    printf("3. PIDY %d %d %d\n", pid[0], pid[1], pid[2]);
}
else
{
    pid[2]=tmp;
    if((tmp=fork()) == 0)
    {
        pid[1]=getpid();
        printf("2. PIDY %d %d %d\n", pid[0], pid[1], pid[2]);
    }
    else
    {
        pid[1]=tmp;         
        printf("1. PIDY %d %d %d\n", pid[0], pid[1], pid[2]);
    }
}
return 0;
}

在输出我得到这样的smth:

1. PIDY 101 102 103
2. PIDY 101 102 103
3. PIDY 101 0 103

我想知道为什么我在第三个过程中得到pid [1] = 0?知道怎么解决吗?



1> 小智..:

打印3.线的过程在任何设置之前已经分叉pid[1].它不在共享内存中,因此没有值可以从其他进程存储到它中,并且你从未初始化它,所以它包含内存污垢,只巧巧0.

如果数组被声明为全局变量或者它是函数中的静态变量,那么0除非已经初始化,否则元素将被初始化为. C中int数组的初始值是一个很好的读数.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有