在这个程序中创建了多少个进程?

时间:2014-05-05 15:52:33

标签: c fork

我需要知道这创造了多少个进程。我认为这个程序会创建6个进程吗?

#include <stdio.h>
#include <unistd.h>
int main() {

    /* fork a child process */
    pid_t pid = fork();

    if (pid < 0) {
        fprintf(stderr, “Fork failed”);
        exit(-1);
    } else if (pid != 0) {
        /* fork another child process */
        fork();
    }

    /* fork another child process */
    fork();
    return 0;
}

1 个答案:

答案 0 :(得分:2)

以下是我会找到答案的方法。在每个fork()之后,我会打印当前进程ID。当我运行程序时,我会记下所有唯一的进程ID,这会告诉我有多少进程存在:

这是我的计划:

#include <stdio.h>
#include <unistd.h>
int main() {

    /* fork a child process */
    pid_t pid = fork();
    printf("fork I: %d\n", getpid()); fflush(stdout);

    if (pid < 0) {
        fprintf(stderr, "Fork failed");
        exit(-1);
    } else if (pid != 0) {
        /* fork another child process */
        fork();
        printf("fork II: %d\n", getpid()); fflush(stdout);
    }

    /* fork another child process */
    fork();
    printf("fork III: %d\n", getpid()); fflush(stdout);
    return 0;
}

这是我的输出:

fork I: 7785
fork I: 7786
fork II: 7785
fork III: 7785
fork III: 7786
fork II: 7787
fork III: 7788
fork III: 7789
fork III: 7787
fork III: 7790

在我的程序运行中,总共有6个进程,包括原始进程。