dup,dup2函數

dup,dup2函數

這兩個函數的功能是輸出的重定向
      定義這兩個函數的頭文件是unistd.h,有興趣的可以自己看看這個頭文件包含的內容
      
      要提的是這個頭文件同時定義了下面三個常量

      兄弟們學習網絡編程用0,1,2這些參數的時候也得知道代表的意思

      要說這兩個函數的意思,還是看一段具體的代碼
      

int fd, fd2;  
mode_t fd_mode 
= S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH;  
 
void redir_stdout(const char *filename)  
{  
    fd2
=dup(STDOUT_FILENO);  
    fd 
= open(filename, O_WRONLY|O_CREAT, fd_mode);  //打開文件操作
    dup2(fd, STDOUT_FILENO);  //把輸出重定向到fd標識的文件
    close(fd);  
}
  


      fd2=dup(STDOUT_FILENO);說明fd2表示了標準輸出
      如果我們想把剛剛定向到fd的輸出,再定向回標準輸出,我們可以用下面的代碼實現:

void resume_stdout()  //恢復輸出,把標準輸出定向到fd2,fd2代表的是標準輸出
{  
    dup2(fd2, STDOUT_FILENO);   
    close(fd2);  
}
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章