c - fork() pipeline() dup2 无法与外部子进程通信

标签 c process

我试图在 fork() 之后向 child 发送一些东西,我已经设置了 dup2 来重定向 child 的输出。但看起来它没有得到流。 更进一步,我如何从 child 那里得到输出。 该文件是一个外部可执行文件,仅打印文本但不显示。 请问有什么帮助吗?

最佳答案

  1. 您错误地使用了 pipe,因为它只需要调用一次 ( RTM )。

  2. 您错误地调用了calloc。使用calloc(100, sizeof(char))

  3. 不要将常量字符串分配给动态分配的内存部分。请改用 char message[] = "sent fromparent"。这种方式也是有益的,因为您可以在 write 中使用 sizeof 而不是 100。这也可能导致段错误,因为“从父级发送” 所在的内存区域长度不是 100 字节。

  4. 使用execv而不是execlp。您无需使用 execlp

关于c - fork() pipeline() dup2 无法与外部子进程通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18974161/

相关文章:

c - 如何将 "const char * "的内容写入文本文件?

c - 为什么在写入使用字符串初始化的 "char *s"时会出现段错误,而不是 "char s[]"?

c - 矩阵索引自动更新?

c++ - 此代码如何在没有任何循环语句或 'goto' 或递归的情况下循环?

C:处理多个管道时 write() 的行为很奇怪

c++ - 等待进程存在于 "native"C++ 中?

c - 有没有可能用C写的程序下载一个外部函数,把这个外部函数当作一个编译链接的共享对象?

c - 两台Linux机器之间共享内存?

linux - 如何在 Linux 上使用 CLONE_SETTLS 和 CLONE_VM

windows - 使用 taskkill/F 返回代码 0 终止进程