gpt4 book ai didi

c - 2 子进程不显示消息

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:56 24 4
gpt4 key购买 nike

我正在尝试学习编程,但我不明白为什么我不能让 child 2 打印 hello。我还关闭了父级管道的读写端,因为我不希望父级进行通信。非常感谢任何帮助。

 int main ()

{

int fd[2];

pid_t child_pid, child_pid1;


if (pipe(fd) < 0)
{
printf("Pipe error");
}

child_pid = fork (); // child 1
if (child_pid != 0)
{
printf("im child 1");
dup2 (fd[1], STDIN_FILENO);
printf("greetings");


child_pid1 = fork (); //child 2
if (child_pid1 != 0)
{
printf("im child 2");
dup2(fd[0], STDOUT_FILENO);
printf("hello");

}

else if (child_pid1 > 0) //Parent Code
{
close (fd[0]);
close (fd[1]);

}
}

return 0;

}

最佳答案

您的第一个 if 子句是错误的。

child_pid = fork (); // child 1
if (child_pid != 0)
{
printf("im child 1");
}

这不是 child 而是 parent 。如果是 child ,则 pid 将为 0,只有在您有 child_pid != 0 的父级上。

同样的情况也发生在第二个 if 子句中。

如果您希望在子进程中执行该代码,则在这两种情况下都应该执行 if(child_pid == 0)

关于c - 2 子进程不显示消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20932455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com