我试图在 fork() 之后向 child 发送一些东西,我已经设置了 dup2 来重定向 child 的输出。但看起来它没有得到流。 更进一步,我如何从 child 那里得到输出。 该文件是一个外部可执行文件,仅打印文本但不显示。 请问有什么帮助吗?
最佳答案
您错误地使用了
pipe
,因为它只需要调用一次 ( RTM )。您错误地调用了
calloc
。使用calloc(100, sizeof(char))
不要将常量字符串分配给动态分配的内存部分。请改用
char message[] = "sent fromparent"
。这种方式也是有益的,因为您可以在write
中使用sizeof
而不是100
。这也可能导致段错误,因为“从父级发送”
所在的内存区域长度不是100
字节。使用
execv
而不是execlp
。您无需使用execlp
关于c - fork() pipeline() dup2 无法与外部子进程通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18974161/