多个叉子输出的问题

时间:2014-11-25 15:02:48

标签: operating-system fork

大家好,我有这个示例代码,但我无法理解它的输出是什么,你们中的任何人都可以为我解释这个。

提前预订

int main(){

 int i, j;
 i = j = 0;
 fork();
 j++;
 printf("i = %d, j = %d \n", i, j);
 if(fork())
 {
    i += 5;
    fork();

    j *= 3;
    printf("i = %d, j = %d \n", i, j);
}
else
{
    i = j;
    printf("i = %d, j = %d \n", i, j);
    i--;
    if(fork() == 0)
        printf("i = %d, j = %d \n", i, j);  
}}

1 个答案:

答案 0 :(得分:0)

每次代码调用fork()函数时,它都会创建一个与自身重复的进程。

fork()将子进程的进程ID返回给父进程,将0返回给子进程。

 if (fork ())
 {
     // Code executes in the parent process but not the child process.

  }
 else
 {
     // Code executes in the child process but not in the parent process.
 }


if (fork () == 0)
 // Code executes in the child process

然后,您可以绘制一个小树,显示新流程的创建以及输出的内容。