dup() dup2()函數

原文鏈接:dup詳解

dup()

#include <unistd.h>
int dup(int oldfd);

dup用來複制參數oldfd所指的文件描述符。當複製成功是,返回最小的尚未被使用過的文件描述符,若有錯誤則返回-1.錯誤代碼存入errno中返回的新文件描述符和參數oldfd指向同一個文件,這兩個描述符共享同一個數據結構,共享所有的鎖定,讀寫指針和各項全現或標誌位。

調用dup(oldfd)等效於
fcntl(oldfd, F_DUPFD, 0)

dup1()

#include <unistd.h>
int dup2(int oldfd, int newfd);

dup2與dup區別是dup2可以用參數newfd指定新文件描述符的數值。若參數newfd已經被程序使用,則系統就會將newfd所指的文件關閉,若newfd等於oldfd,則返回newfd,而不關閉newfd所指的文件。dup2所複製的文件描述符與原來的文件描述符共享各種文件狀態。共享所有的鎖定,讀寫位置和各項權限或flags等.

返回值:
若dup2調用成功則返回新的文件描述符,出錯則返回-1.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章