我想重定向输出在C(./a.out > out.log
),我希望printf打印到文件而不是标准输出,由于某种原因,我无法实现这一点,我也不明白什么是'复制”中描述dup2
在linux手动装置:输出重定向在C
DUP2()使得newfd是oldfd副本,第一闭塞newfd如果 必要
是拷贝意味着重定向?
感谢您的帮助。
#include <stdio.h>
#include <unistd.h>
int main(){
FILE *fout=fopen("out.log","wt");
if(!fout)
return 1;
printf("Hi stdout\n");
if(dup2(fileno(fout),fileno(stdout) == -1)) return 1;
printf("Hi file\n");
fclose(fout);
return 0;
}
手册页的[更新版本](http://man7.org/linux/man-pages/man2/dup.2.html)更具信息性。它实际上意味着文件描述符的**副本**,所以系统调用确实可以用于实现重定向。 – chrk