系统编程 - Fork()方法

Ser*_*glu 2 c c++ unix operating-system fork

我正在研究系统编程系统调用.我的作业中有一个代码块(如下所示).问题是我要打印多少A,B或C. 我的问题是什么意思if(pid == 0)?我猜这if(pid == 0)意味着错误,所以我分析将打印2 x A和2 x B. 我写的还是?第二个问题是pid2 = fork()再次执行主要?

int main()
{
  int pid,pid2;
  int i;
  pid = fork();
  printf("A\n");
  if (pid == 0)
    pid2=fork();
  if (pid2)
    printf("B\n");
  printf("C\n");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

cni*_*tar 6

fork系统调用是特殊的.你调用它一次,它返回两次.一旦进入孩子,一次进入父母.

在父级中,它返回子级的pid,在子级中返回0.因此,if (pid == 0)表示" 如果这是子级 ".