我想重定向輸出在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