-2

質問 A:

以下のコードを考えると、フォークを呼び出すと、ほとんどの場合、そのリソースが子プロセスに渡されることがわかります。現在、私が調べたほぼすべてのフォークの例は、私が持っているものと同じように設定されています。見た目から、elseブロックにあるため、親プロセスがどのように呼び出されるかわかりません。

質問 B:

子プロセスのコードが実行された後、すぐに親プロセスに入る必要があることを自動的に認識しますか? 他の例でも待機(NULL)を見てきましたが、とにかくelseブロックに入る場合、その待機の役割は何ですか。同じ親の 2 つの子プロセスを実行したいとします。これら 2 つを並行して実行し、完了したら親のコードを実行しますか? ありがとう。

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

int main()
{
        pid_t pid;
        pid = fork();

        if(pid == 0){
                printf("Hello World");
        }
        else{
                printf("Hello World");
        }
        return 0;
}
4

1 に答える 1

6

あなたは概念を少し誤解していると思います。fork() はプロセスを複製します。つまり、親と子の両方が実行され、両方のコードに同じ if-else があります (同じコードをfork()下から実行するため)。

子のプロセス ID が 0 であるため if に入り、親のプロセス ID が 0 ではないため、else に入ります。これは、プロセスが同じコードを持っていても、プロセスがそれぞれ独自の処理を実行できるようにする方法です。

于 2013-02-22T23:31:50.470 に答える