/*dup和dup2都可用來複製乙個現存的檔案描述符,使兩個檔案描述符指向同乙個file結構體。如果
兩個檔案描述符指向同乙個file結構體, file status flag和讀寫位置只儲存乙份在file結構體中,
並且file結構體的引用計數是2。如果兩次open同一檔案得到兩個檔案描述符,則每個描述符對應
乙個不同的file結構體,可以有不同的file status flag和讀寫位置。請注意區分這兩種情況
平台:ubuntu 14.04
*/int main(void)
; int n;
int fd=open("somefile",o_rdwr | o_creat,0644);
/*儲存stdin_fileno的檔案描述符*/
int ttyfd=dup(stdin_fileno);
while(1)
/*將stdin_fileno重定向到fd中,也就是somefile檔案中*/
dup2(fd,stdin_fileno);
/*將資訊寫入somefile中*/
write(stdin_fileno,buff,n);
/*在將stdout_fileno重新指向ttyfd中,也就是之前的儲存的檔案描述符*/
dup2(ttyfd,stdin_fileno);
}return 0;
}效果圖如下:
重定向程式設計 dup和dup2函式
輸入重定向 關閉標準輸入裝置,開啟 或複製 某普通檔案,使其檔案描述符為0.輸出重定向 關閉標準輸出裝置,開啟 或複製 某普通檔案,使其檔案描述符為1.錯誤輸出重定向 關閉標準錯誤輸入裝置,開啟 或複製 某普通檔案,使其檔案描述符為2.1.dup函式 返回值 如成功則返回新的檔案描述符,否則出錯返回...
使用dup和dup2重定向和還原
使用dup 和dup2 重定向和還原 源於開發乙個應用將資料寫的裝置節點中,但是裝置節點具有可變性,所以不在寫死,而是先確定好,開啟fd 再將內容寫進去,最終寫入 fd中的是乙個開源程式,沒有辦法傳遞 fd,不過它會把它要輸出的東西輸出到 stdout 中,開啟這個開源程式之前把 stdout 重定...
使用dup和dup2重定向和還原
使用dup 和dup2 重定向和還原 源於開發乙個應用將資料寫的裝置節點中,但是裝置節點具有可變性,所以不在寫死,而是先確定好,開啟fd 再將內容寫進去,最終寫入 fd中的是乙個開源程式,沒有辦法傳遞 fd,不過它會把它要輸出的東西輸出到 stdout 中,開啟這個開源程式之前把 stdout 重定...