dup,dup2函式,複製檔案描述符

2021-08-04 15:39:23 字數 819 閱讀 1625

dup 和 dup2 都可以用來複製乙個現存的檔案描述符。經常用來重新定向程序的 stdin,stdout,stderr

#include

int dup(int oldfd);

int dup2(int oldfd, int newfd);

這兩個函式我們可以用來複製檔案描述符。

其中oldfd和newfd分別是複製前的檔案描述符和複製後的檔案描述符。

這兩個函式的呼叫都複製檔案描述符oldfd,且返回值都為新的檔案描述符。

不同點是:dup()的返回值是最小的未用檔案描述符;dup2()的返回值是預先指定的檔案描述符newfd。

對於dup2(),如果檔案描述符newfd正在被使用,則先關閉newfd;如果newfd同oldfd,則不關閉該檔案正常返回。

了解一下檔案描述符在核心中的形態.

乙個程序在存在期間,會有一些檔案被開啟,從而會返回一些檔案描述符,從shell中執行乙個程序,缺省會有3個檔案描述符存在(0、1、2)

0與程序的標準輸入相關聯

1與程序的標準輸出相關聯

2與程序的標準錯誤輸出相關聯

檔案描述符的重定向 dup dup2

dup dup2 進行檔案描述符的重定向即建立乙個oldfd的副本。dup 最低編號 未被使用的檔案描述符是oldfd的乙份拷貝。dup2 newfd是oldfd的乙份拷貝。返回值 成功 newfd 失敗 1 基於tcp的socket程式設計 以基於tcp的socket程式設計中的多執行緒伺服器為例...

使用dup dup2進行檔案描述符重定向

當乙個程序執行時,會有相應的檔案描述符 linux一切皆檔案 一般會有3個預設的檔案描述符 0 與標準輸入關聯 1 與標準輸出關聯 2 與標準錯誤輸出關聯 dup dup2函式,對檔案描述符重定向 close 1 關閉要重定向的檔案描述符 dup fd,1 將標準輸出重定向到開啟的檔案 dup2 f...

linux中dup dup2 的學習總結

1 要了解dup dup2 的使用先要了解檔案描述符。檔案描述符是非負整數,是檔案的標識。使用者使用檔案描述符 file descriptor 來訪問檔案。每個程序都有一張檔案描述符的表,程序剛被建立時,標準輸入 標準輸出 標準錯誤輸出裝置檔案被開啟,對應的檔案描述符0 1 2 記錄在表中。在程序中...