希望高手帮我讲解一下这段代码

Surellc 发布于 2013/01/27 14:14
阅读 487
收藏 0

本人是菜鸟一个,刚刚学习操作系统,希望高手能够给我仔细的讲解一下这段代码,谢谢啦!

加载中
0
fromdtor
fromdtor
产生一个子进程,然后父进程等待子进程退出;而子进程自己又产生一个子进程,也是等待子进程退出;第二次产生的子进程睡了两秒之后退出,然后第一次产生的子进程满足退出条件,也退出,最后程序启动时的进程退出,整个程序结束。
要点:
成功的fork()调用返回两个值,在父进程里返回大于0的pid标识产生的进程;在子进程本身里返回0。
fork()之后的两个进程共享进程空间。
int main(void)
{
    pid_t pid;
    
    if((pid=fork())<0)//创建进程错误
        printf("fork error"),exit(-1);
    else if(pid==0){//子进程
        if((pid=fork())<0)
            printf("fork error"),exit(-1);
        else if(pid>0)
            exit(0);
        sleep(2);//子进程产生的子进程
        printf("second child,parent pid = %d\n",getppid());
        exit(0);//退出子进程产生的子进程
    }
    //此处,为父进程
    if(waitpid(pid,NULL,0) != pid)//等待子进程退出
        printf("waitpid error"),exit(-1);
    exit(0);
}

S
Surellc
非常感谢,太讲究了!!
0
中山野鬼
中山野鬼
楼上的,你还是帮他讲解下fork的用法和注意事项吧。哈。。。。不然有点白搭。他说他是菜鸟。。。
0
地瓜儿
地瓜儿

引用来自“中山野鬼”的答案

楼上的,你还是帮他讲解下fork的用法和注意事项吧。哈。。。。不然有点白搭。他说他是菜鸟。。。

好久没看到鬼哥了、、、

0
fromdtor
fromdtor

引用来自“中山野鬼”的答案

楼上的,你还是帮他讲解下fork的用法和注意事项吧。哈。。。。不然有点白搭。他说他是菜鸟。。。
看起来他已经明白了。!您是在考验我啊,我自己认为自己懂了,可是要讲明白,呵呵,没有把握!
0
hucw
hucw
这段代码的主要目的是产生一个精灵进程,第二个子进程的父进程是init进程,打印出来的pid=1(这里忘记了ini的进程id,不是0就是1)
0
半个黑客
半个黑客
linux中的进程创建吧?fork()的返回值清楚了,也就不难理解吧。好久不动linux了。。。
0
中山野鬼
中山野鬼

引用来自“地瓜头”的答案

引用来自“中山野鬼”的答案

楼上的,你还是帮他讲解下fork的用法和注意事项吧。哈。。。。不然有点白搭。他说他是菜鸟。。。

好久没看到鬼哥了、、、

最近写稿子呢。。。。主要折腾党政经的东西。。。。哈。
返回顶部
顶部