利用dup和dup2在linux中實現簡單的重定向輸出
阿新 • • 發佈:2018-12-31
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實現輸出重定向