首页 > 解决方案 > 打开管道进行写入时程序堆栈

问题描述

这是test1.c

int main()
{
  int i,k=10,fd;
  pid_t childpid;
  mkfifo("myfifo", 0777);
  fd = open("myfifo", O_WRONLY);
  write(fd, &k, sizeof(int));
  childpid = fork();
  if (childpid==0) {
      execlp("./test2", "/test2", (char *) NULL);
  }
}

这是test2.c

int main()
{
  int k,fd;
  fd = open("myfifo", O_RDONLY);
  read(fd, &k, sizeof(int));
  printf("%d\n", k);
}

该程序似乎冻结在 fd = open("myfifo", O_WRONLY);我认为是冻结,因为它等待有人打开另一边。但是,这发生在我用 exec 调用的 test2.c 中。我是这方面的新手,我确信我理解错了。有任何想法吗?提前致谢!

标签: execfifo

解决方案


推荐阅读