如何将execlp
输出重定向到文件?例如,我想将execlp("ls", "ls", "-l", NULL)
的输出重定向到输出文件(比如a.txt)。
答案 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
详细信息可能因操作系统与操作系统和编译器版本而异。