Linux中檔案描述符 0代表标準輸入檔案stdin、1代表标準輸出檔案stdout、2代表标準錯誤輸出檔案stderr,STDOUT_FILENO是一個宏 為1
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<fcntl.h>
int main()
{
int fd_new,fd_old,fd_c;
fd_c = open("test.txt",O_CREAT | O_RDWR,0664);
if(-1 == fd_c)
exit(1);
fd_old = dup(STDOUT_FILENO);
//将STDOUT_FILENO的檔案描述符所指向的内容複制一份給fd_old
dup2(fd_c,STDOUT_FILENO);
//将STDOUT_FILENO複制一份給fd_c
close(fd_c);
//關閉 計數将減1
printf("hello");
fflush(stdout);
write(STDOUT_FILENO,"ojbk",4);
dup2(STDOUT_FILENO,fd_old);
//恢複回來
close(fd_old);
return 0;
}
主要是利用dup和dup2實作輸出重定向