基礎知識 三 重定向dup和dup2

2021-10-12 08:37:24 字數 651 閱讀 6775

#include int dup(int oldfd);

int dup2(int oldfd, int newfd);

當呼叫dup時,核心在程序中建立乙個新的檔案描述符,這個檔案描述符是現有可用檔案描述符中最小的,而且它指向的是oldfd所指向的檔案。

而dup2不同的是,如果newfd已經開啟,則將其關閉,如果newfd等於oldfd,則返回newfd,而不關閉它,說白了就指定乙個檔案描述符,而dup是取可用範圍內的最小的。

實際上:

呼叫dup(oldfd)等效於,fcntl(oldfd,f_dupfd,0);

呼叫dup2(oldfd,newfd)等效於,close(newfd),fcntl(oldfd,f_dupfd,newfd);

#include #include #include #include int main(int argc, char* ar**)

int nfd = dup(fd);

if(nfd < 0)

char buf[1000];

int n;

while((n = read(stdin_fileno, buf,1000)) > 0)

}return 0;

}

使用dup和dup2重定向和還原

使用dup 和dup2 重定向和還原 源於開發乙個應用將資料寫的裝置節點中,但是裝置節點具有可變性,所以不在寫死,而是先確定好,開啟fd 再將內容寫進去,最終寫入 fd中的是乙個開源程式,沒有辦法傳遞 fd,不過它會把它要輸出的東西輸出到 stdout 中,開啟這個開源程式之前把 stdout 重定...

使用dup和dup2重定向和還原

使用dup 和dup2 重定向和還原 源於開發乙個應用將資料寫的裝置節點中,但是裝置節點具有可變性,所以不在寫死,而是先確定好,開啟fd 再將內容寫進去,最終寫入 fd中的是乙個開源程式,沒有辦法傳遞 fd,不過它會把它要輸出的東西輸出到 stdout 中,開啟這個開源程式之前把 stdout 重定...

重定向程式設計 dup和dup2函式

輸入重定向 關閉標準輸入裝置,開啟 或複製 某普通檔案,使其檔案描述符為0.輸出重定向 關閉標準輸出裝置,開啟 或複製 某普通檔案,使其檔案描述符為1.錯誤輸出重定向 關閉標準錯誤輸入裝置,開啟 或複製 某普通檔案,使其檔案描述符為2.1.dup函式 返回值 如成功則返回新的檔案描述符,否則出錯返回...