-2
您好,感谢您的关注。我在c写我自己的shell,我有重定向标准输出的问题。例如,我得到命令:ls -l >>文件,我需要显示输出到文件。你能给我一些想法来解决这个问题吗?谢谢。重定向标准输出
您好,感谢您的关注。我在c写我自己的shell,我有重定向标准输出的问题。例如,我得到命令:ls -l >>文件,我需要显示输出到文件。你能给我一些想法来解决这个问题吗?谢谢。重定向标准输出
您可能需要使用DUP()& DUP2(),这里有两个功能,我已经准备好:
void stdout_redirect(int fd, int *stdout_bak)
{
if (fd <= 0)
return;
*stdout_bak = dup(fileno(stdout));
dup2(fd, fileno(stdout));
close(fd);
}
void stdout_restore(int stdout_bak)
{
if (stdout_bak <= 0)
return;
dup2(stdout_bak, fileno(stdout));
close(stdout_bak);
}
这里是如何使用它:
int main(void)
{
int stdout_bak;
FILE *fd;
fd = fopen("tmp", "w");
stdout_redirect(fileno(fd), &stdout_bak);
/* Your Stuff Here */
stdout_restore(&stdout_bak);
return 0;
}
你听到的[ dup2](http://man7.org/linux/man-pages/man2/dup.2.html) –
可能的重复[重新路由stdin和标准输出从C](http://stackoverflow.com/questions/584868/ rerouting-stdin-and-stdout-from-c) – 4386427
是的,我听说过它,但我不知道它是如何工作的。我读过它,但我不知道如何使用它 – ByQ