将execlp输出重定向到文件

时间:2011-06-27 13:35:07

标签: c redirect

如何将execlp输出重定向到文件?例如,我想将execlp("ls", "ls", "-l", NULL)的输出重定向到输出文件(比如a.txt)。

2 个答案:

答案 0 :(得分:5)

你需要做这样的事情:

int fd = open("output_file", O_WRONLY|O_CREAT, 0666);
dup2(fd, 1);
close(fd);
execlp("ls", "ls", "-l", (char *)0);

答案 1 :(得分:1)

最简单的方法是使用freopen在新文件上打开标准输出:

  

文件*       freopen(const char * restrict filename,const char * restrict mode,           FILE *限制流);

来自fopen的手册页(包括freopen):

  

freopen()函数打开文件   其名称是指向的字符串        to by filename并将stream指向的流与它相关联。        原始流(如果存在)已关闭。模式参数   是        与fopen()函数一样使用。

所以,在你的情况下,像:

#include <stdio.h>
FILE *myStdOut;
myStdOut = freopen("a.txt", "rw", stdout);
if (myStdOut == NULL)
    // Error case, open failed

详细信息可能因操作系统与操作系统和编译器版本而异。