Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 此程序中创建了多少个进程?_C_Fork - Fatal编程技术网

C 此程序中创建了多少个进程?

C 此程序中创建了多少个进程?,c,fork,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 (

我需要知道这会创建多少个进程。我认为这个项目将创建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;
}
#包括
#包括
int main(){
/*派生子进程*/
pid_t pid=fork();
if(pid<0){
fprintf(标准“Fork failed”);
出口(-1);
}否则如果(pid!=0){
/*fork另一个子进程*/
fork();
}
/*fork另一个子进程*/
fork();
返回0;
}

以下是我如何找到答案的。每次
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;
}

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

让我猜猜。。作业恐怕你得自己去弄清楚。该死,这么多重复。这个问题似乎离题了,因为它是关于homwork的,而且是一个大重复。@Martin James:我知道你在那里做了什么……但他考试时不会有电脑——所以也许知道fork()返回的值是这里的方法。。。
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