1. 程式人生 > >dup和dup2函式的小理解

dup和dup2函式的小理解

int  dup(int fd);
 int dup2(int fd, int fd 2);

dup的引數是一個檔案描述符,指向一個檔案(stdin,stdout等也是特殊的檔案)。返回的也是一個檔案描述符(當前還未被使用的最小的描述符編號),這個描述符和fd指向同一個檔案。也就是說,當你當你用write向返回的檔案描述符寫入時,也相當於向fd指向的檔案寫入。

dup2多了一個引數,這個引數讓我們可以不僅僅用還未被使用的描述符,而是可以任意指定描述符,這個函式相當於close(fd2); dup(fd);(一般來說fd2是標準輸入輸出,所以close後是未使用的最小描述符)。此時, fd2與fd指向同一個檔案。