c語(yǔ)言的dup函數(shù) c語(yǔ)言中各種函數(shù)用法

linux下C語(yǔ)言編程,管道,dup,fork,疑問(wèn)的是,為什么連用那么多close?必須要close? 代碼如下

文件描述符0,1,2分別表示標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)錯(cuò)誤輸出, 所以在子進(jìn)程里close(1)是關(guān)閉了標(biāo)準(zhǔn)輸出, 然后用dup(fda[1]);此時(shí)未用的最小文件描述符就是1(被關(guān)閉);這里關(guān)閉fda[0]就是為了說(shuō)明在子進(jìn)程是管道的寫(xiě)端(fda[0],不關(guān)閉是可以的為了保險(xiǎn)起見(jiàn)關(guān)閉).然后子進(jìn)程退出會(huì)調(diào)用系統(tǒng)程序ls,于是當(dāng)前的文件目錄就被發(fā)送到管道中.父進(jìn)程同理, 就是將標(biāo)準(zhǔn)輸出作為管道的讀端,它讀到的是子進(jìn)程ls后的內(nèi)容,對(duì)文件計(jì)數(shù),

成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供華寧企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、HTML5、小程序制作等業(yè)務(wù)。10年已為華寧眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

c語(yǔ)言的 dup函數(shù)

你可以這樣做,但是沒(méi)有必要。

因?yàn)?fd是指向你的打開(kāi)的文件表項(xiàng)(每個(gè)打開(kāi)的文件都有這么一表項(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āo)毀文件表項(xiàng)以及文件的vnode(inode結(jié)構(gòu))。即便你不手動(dòng)關(guān)閉文件,進(jìn)程結(jié)束時(shí),系統(tǒng)會(huì)自動(dòng)關(guān)閉你打開(kāi)的文件,所以,試情況而定。有時(shí)你可以不必自己close文件。

C語(yǔ)言中dup和dup2函數(shù)的不同和使用

首先我們要關(guān)閉指定的描述符,假如我們希望將文件描述符fd1復(fù)制為fd2,那么我們應(yīng)該先關(guān)閉文件描述符fd2。因?yàn)檫@個(gè)描述符很有可能被打開(kāi)了。接下來(lái)就是要暴力的調(diào)用dup函數(shù)復(fù)制描述符fd1,直到返回值等于fd2為止。

c語(yǔ)言運(yùn)行dup2(socket,1)卡住了是怎么回事

C語(yǔ)言dup2()函數(shù):復(fù)制文件描述詞

頭文件:

?#include unistd.h

定義函數(shù):?int dup2(int odlfd, int newfd);

函數(shù)說(shuō)明:dup2()用來(lái)復(fù)制參數(shù)oldfd 所指的文件描述詞, 并將它拷貝至參數(shù)newfd 后一塊返回. 若參數(shù)newfd為一已打開(kāi)的文件描述詞,

則newfd 所指的文件會(huì)先被關(guān)閉. dup2()所復(fù)制的文件描述詞, 與原來(lái)的文件描述詞共享各種文件狀態(tài), 詳情可參考dup().

返回值:當(dāng)復(fù)制成功時(shí), 則返回最小及尚未使用的文件描述詞. 若有錯(cuò)誤則返回-1, errno 會(huì)存放錯(cuò)誤代碼.

附加說(shuō)明:dup2()相當(dāng)于調(diào)用fcntl(oldfd, F_DUPFD, newfd).

錯(cuò)誤代碼:EBADF 參數(shù)fd 非有效的文件描述詞, 或該文件已關(guān)閉

分享文章:c語(yǔ)言的dup函數(shù) c語(yǔ)言中各種函數(shù)用法
標(biāo)題路徑:http://muchs.cn/article12/doegcgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化面包屑導(dǎo)航、電子商務(wù)網(wǎng)站改版、自適應(yīng)網(wǎng)站、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)