首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统编程-- Fork()方法

系统编程-- Fork()方法
EN

Stack Overflow用户
提问于 2012-04-16 03:44:11
回答 5查看 835关注 0票数 2

我正在学习系统编程系统调用。我的任务中有一个代码块(如下所示)。这个问题问我要打印多少个A、B或C。我的问题是if(pid == 0)是什么意思?我猜if(pid == 0)的意思是false,所以我分析2xA和2xB将被打印出来。我是在写还是?第二个问题是pid2 = fork()会再次执行main吗?

代码语言:javascript
复制
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;
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-04-16 03:46:24

fork系统调用是特殊的。你调用它一次,它返回两次。一次在子进程中,一次在父进程中。

在父进程中,它返回子进程的pid,在子进程中,它返回0。因此,if (pid == 0)的意思是“如果这是孩子”。

票数 6
EN

Stack Overflow用户

发布于 2012-04-16 03:46:21

fork0返回子进程,将子进程的pid返回父进程。手册页应该会把其他的东西都弄清楚。

票数 3
EN

Stack Overflow用户

发布于 2012-04-16 03:49:12

Fork返回2个值:

子进程中的fork

  • 为0,父进程中为正值。

  • 调用fork()后,您将拥有2个进程(如果没有发生错误,则返回-1 )。

在您的示例中,您创建了3个进程,并将输出2A、1B和3C

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10165409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档