原文鏈接: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.