0

私はソケットプログラミングについて学んでおり、Cプログラミングについてよく知っています。

私のCプログラミングの知識に基づいて、elseステートメント内のプロセスが処理されると。if ステートメント内のプロセスは発生してはならず、強制終了されます。インスタンスについて、

int a = 1;
if(a == 1) process1 ;
else process2;

上記のステートメントに基づくと、a は 1 に等しいため、process1 を実行する必要があり、process2 は実行されません。それは正しいはずです、そう願っていました。

私の質問は次のコードです

int main(void){
   pid_t pid;
   int pp[2];

   pipe(pp);

   pid = fork();
   if(pid == 0){
      printf("Processed pid == 0\n");
   }else{
      printf("Processed pid != 0\n");
   }

   return 0;
}

そして、次の出力結果が得られました

Processed pid == 0
Processed pid != 0

私の質問は、ステートメント if および else の結果が表示されるのはなぜですか?

4

1 に答える 1

1

見上げましたman fork()か?

親は子の PID (非ゼロ) を取得し、子はゼロを取得するため、親は if の「一方」を実行し、子は「他方」を実行します。

< 編集 > もちろん、(親への) -1 リターンはエラーを示します。

于 2013-04-28T10:50:02.890 に答える