微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

学习如何在C中使用管道同步父子进程的执行

如何解决学习如何在C中使用管道同步父子进程的执行

我有这个程序

int main()
{
  char *s,buf[1024];
  int ret,stat;
  s  = "Use for syncing\n";

  ret = fork();

  if (ret == 0)
  {
    printf("Child line 1\n");
    printf("Child line 2\n");
  } 
  else 
  {
    printf("Parent line 1\n");
    printf("Parent line 2\n");
    wait(&stat);
  }
}

这个程序的输出是当前

Parent line 1
Parent line 2
Child line 1
Child line 2

但我需要更改代码以使子进程和父进程同步,因此所需的输出是:

Child line 1
Parent line 1
Child line 2
Parent line 2

我在概念上无法理解如何执行此操作,我知道调用 ret = fork() 时它将返回一个不等于 0 的整数,因此,它将转到 if-否则,进程成功返回后,ret的值将变为0,并转到if-else的if部分。我尝试在 else 语句中使用 wait(&ret) 以便程序将等待 ret 返回 0 但这只会返回与当前输出相反的结果。这是我对同步的理解结束的地方,所以我被困在了这一点上。

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。