gpt4 book ai didi

c - 为什么在 C 中重定向标准输入不起作用?

转载 作者:行者123 更新时间:2023-12-02 22:41:42 24 4
gpt4 key购买 nike

我试图通过管道“my_pipe”将标准输入从父级重定向到子级,但是当我运行我的程序时,我没有看到预期的结果。

当我执行程序时,它需要来自 stdin 的输入,那么为什么它不在 dup2 中重定向 stdin?

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>



int main(int argc, char* argv[])
{
char* arguments[] = {"sort", NULL};

int my_pipe[2];
if(pipe(my_pipe) == -1)
{
fprintf(stderr, "Error creating pipe\n");
}

pid_t child_id;
child_id = fork();
if(child_id == -1)
{
fprintf(stderr, "Fork error\n");
}
if(child_id == 0) // child process
{
close(my_pipe[1]); // child doesn't write
dup2(0, my_pipe[0]); // redirect stdin

execvp(argv[0], arguments);

fprintf(stderr, "Exec failed\n");
}
else
{
close(my_pipe[0]); // parent doesn't read

char reading_buf[1];
write(my_pipe[1], "hello", strlen("hello"));
write(my_pipe[1], "friend", strlen("friend"));
close(my_pipe[1]);
wait();
}
}

最佳答案

你对 dup2 的争论是倒退的。试试 dup2(my_pipe[0], STDIN_FILENO)

关于c - 为什么在 C 中重定向标准输入不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706530/

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