首先我們要關(guān)閉指定的描述符,假如我們希望將文件描述符fd1復(fù)制為fd2,那么我們應(yīng)該先關(guān)兄升閉文件描述符fd2。因?yàn)檫@個(gè)描述符很有可能被打開了。接姿塵搜下來就是要暴力的調(diào)用dup函跡歷數(shù)復(fù)制描述符fd1,直到返回值等于fd2為止。
成都創(chuàng)新互聯(lián)公司是一家以重慶網(wǎng)站建設(shè)公司、網(wǎng)頁設(shè)計(jì)、品牌設(shè)計(jì)、軟件運(yùn)維、成都網(wǎng)站營(yíng)銷、小程序App開發(fā)等移動(dòng)開發(fā)為一體互聯(lián)網(wǎng)公司。已累計(jì)為水泥攪拌車等眾行業(yè)中小客戶提供優(yōu)質(zhì)的互聯(lián)網(wǎng)建站和軟件開發(fā)服務(wù)。
你可以這樣做,但是沒有必要。
因?yàn)?fd是李差困指向你的打開的文件表項(xiàng)(每哪念個(gè)打開的文件都有這么一表項(xiàng)),存在多個(gè)fd指向一個(gè)表項(xiàng)的情況(如你調(diào)用dup2,dup,fcntl),系統(tǒng)采用引用計(jì)數(shù)的方法,如你有兩個(gè)fd指向一個(gè)文件表現(xiàn),則計(jì)數(shù)為2,這樣你每次調(diào)用close,引用計(jì)數(shù)減1,減到0是,銷慶雀毀文件表項(xiàng)以及文件的vnode(inode結(jié)構(gòu))。即便你不手動(dòng)關(guān)閉文件,進(jìn)程結(jié)束時(shí),系統(tǒng)會(huì)自動(dòng)關(guān)閉你打開的文件,所以,試情況而定。有時(shí)你可以不必自己close文件。
C語言dup2()函數(shù):復(fù)制文件描述詞鏈配鬧
頭文件:
?#include unistd.h
定義函數(shù):?int dup2(int odlfd, int newfd);
函數(shù)說明:dup2()用來復(fù)制參數(shù)oldfd 所指的文件描述詞, 并將它拷棚罩貝至參數(shù)newfd 后一塊返回. 若參數(shù)newfd為一已打開的文件描述詞,
則newfd 所指的文件會(huì)先被關(guān)閉. dup2()所復(fù)制的文件描述詞, 與原來的文件描述詞共享各種文件狀態(tài), 詳情可參考dup().
返回值:當(dāng)復(fù)制成功時(shí), 則返回最小及尚未使用的文件描述詞. 若有錯(cuò)誤則返回-1, errno 會(huì)存放錯(cuò)誤代碼.
附加說明:dup2()相當(dāng)于調(diào)用fcntl(oldfd, F_DUPFD, newfd).
錯(cuò)誤代碼:EBADF 參賣陵數(shù)fd 非有效的文件描述詞, 或該文件已關(guān)閉
dup它有多種意義,包括Linux c 函數(shù)、C語言函數(shù)DUP、匯編指令、化學(xué)物質(zhì)DUP。
C語言函數(shù)DUP
函數(shù)簡(jiǎn)介
函數(shù)名: _dup
功 能: 復(fù)制一個(gè)文型鍵型件句柄
用 法: int _dup(int handle);
相關(guān)函數(shù):_dup2、fdopen、freopen、_mbsdup、_wcsdup、_strdup
擴(kuò)展資料:
匯編指令卜猜
dup 在匯編中是一條偽指令,用來重復(fù)初始化數(shù)據(jù)
用法舉例:
str1 db 10 dup ('!@#') ;這就是十個(gè)!@#
格式:亮清db 重復(fù)的次數(shù) dup (重復(fù)的內(nèi)容)
化學(xué)物質(zhì)DUP
DUP是1,2-苯二甲酸二正十一酯,不溶于水,主要是作為增塑劑來使用的,溶于酯類。
參考資料??百度百科-DUP