【问题标题】:How many processes are created in this program? [duplicate]这个程序中创建了多少进程? [复制]
【发布时间】:2014-06-22 00:06:03
【问题描述】:

我需要知道这会创建多少进程。我认为这个程序会创建 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;
}

【问题讨论】:

  • 让我猜猜.. 作业?恐怕你必须自己解决这个问题。
  • 分叉地狱,这么多重复。
  • 这个问题似乎是题外话,因为它是关于 homwork 并且是一个超级骗子。
  • @Martin James:我知道你在那里做了什么......

标签: c fork


【解决方案1】:

这就是我找到答案的方法。在每个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个进程,包括原来的进程。

【讨论】:

  • 但他不会在考试中使用计算机 - 所以也许知道 fork() 返回的值是这里的方法......
猜你喜欢
  • 1970-01-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多