exec - 打开管道进行写入时程序堆栈
问题描述
这是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 中。我是这方面的新手,我确信我理解错了。有任何想法吗?提前致谢!
解决方案
推荐阅读
- python - 使用 etree 在 python 中解析 XML
- python - python blurwuzzy 模糊匹配 - 排除术语
- python-3.x - “从 pyoptsparse 导入优化”不是 pyoptsparse_driver.py 中的有效参考
- javascript - 如何在 node.js 的当前上下文中嵌入对象?
- ruby-on-rails - Rails 和 graphql 大小写约定
- c++ - 如何防止写入 0 而不是未输入的数组元素?
- c - 如何使 C 包装器 API 线程安全?
- c# - C#,如何设计多个接口以访问相同的委托?
- javascript - 如何将有序 Map 构造为持久数据结构?
- c# - 我无法读取字典中的结构值