C-子进程的子进程

时间:2018-07-13 09:17:12

标签: c process fork

我必须像这样重现一个过程家庭:父亲->孩子->孙子。 我不明白为什么孙子代码永远不会执行。 我的代码方案是这样的:

int main() {

    int fatherProcess, p1, p2;

    p1 = fork();

    if(p1 <0) {
        perorr("Failed to create P1\n");

    } else if(p1 == 0) {
        //child code
        p2 = fork();


        if(p2 < 0) {
            perorr("Failed to create P2\n");

        } else if(p2 == 0) {
            //grandson code
            pritnf("Hello I'm the GRANDSON\n");

        } else {
            //child code
            pritnf("Hello I'm the CHILD\n");
        }

    } else {
        //father code

        pritnf("Hello I'm the father\n");

    }

    return 0;
}

我得到的邮票是:  -你好,我是孙子  -你好,我是父亲

1 个答案:

答案 0 :(得分:1)

您犯了两个拼写错误。我已经修复它,您可以尝试下面的代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>

int main() {

    int fatherProcess, p1, p2;

    p1 = fork();

    if(p1 <0) {
        perror("Failed to create P1\n");

    } else if(p1 == 0) {
        //child code
        p2 = fork();


        if(p2 < 0) {
            perror("Failed to create P2\n");

        } else if(p2 == 0) {
            //grandson code
            printf("Hello I'm the GRANDSON\n");

        } else {
            //child code
            printf("Hello I'm the CHILD\n");
        }

    } else {
        //father code

        printf("Hello I'm the father\n");

    }

    return 0;
}

您的代码:

perorr --> perror
pritnf --> printf