1. 程式人生 > >利用dup和dup2在linux中實現簡單的重定向輸出

利用dup和dup2在linux中實現簡單的重定向輸出

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實現輸出重定向