您好,感谢您的关注。我在c中编写自己的shell,我有重定向标准输出的问题。例如,我得到命令:ls -l>>文件,我需要显示输出到文件。你能给我一些解决这个问题的想法吗?感谢。
答案 0 :(得分:0)
您可能想要使用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;
}