gpt4 book ai didi

c - 将 STDOUT 重定向到文本文件无法正常工作

转载 作者:行者123 更新时间:2023-11-30 16:53:10 25 4
gpt4 key购买 nike

父进程在将 stdout 更改为 W-pipeside 后执行 hello.exe(将“Hello!\n”打印到 stdout)。

子进程接受此命令(stdin 更改为 R-pipeside)并将输出重定向到 out.txt 文件。我遵循了此处的指南和许多类似的问题,并且没有发现代码有任何问题。

问题是创建了 out.txt 文件,但它是空的。什么也没写。

int main (void)
{
pid_t child;
int Pipe[2];

(void) pipe(Pipe);

child = fork();

if (child == 0)
{
//Redirecting Child's STDIN to Pipe's read.
(void) close(0);
(void) dup(Pipe[0]);
(void) close(Pipe[0]);
(void) close(Pipe[1]);

//Redirecting Child's STDOUT to out.txt file.
int file = open("out.txt", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
(void) close(1);
(void) dup(file);
(void) close(file);
}
else
{
//parent process
(void) close(1);
(void) dup(Pipe[1]);
(void) close(Pipe[0]);
(void) close(Pipe[1]);
(void) execl("hello.exe", "hello.exe", (char*)NULL);
perror("execl");
}

return 0;
}

最佳答案

Can you please provide more information on how to correctly read and write in the child process?

如果我复制我的 key 并将其给你,这是否意味着门会在那时神奇地打开?当然不是。在我复制 key 后,您仍然需要用它做一些事情。同样在这里。复制文件描述符不会神奇地导致数据被读取或写入。您仍然需要调用写入或读取这些文件描述符的函数。在这种情况下,调用任何标准函数从 stdin 读取数据(例如 scanffgets(.., stdin) 等)并写入 stdout > (例如 printfwrite(STDOUT_FILENO, ..) 等)。通过在子级中调用这些函数来尝试一下。 – 凯勒姆

关于c - 将 STDOUT 重定向到文本文件无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40966247/

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