1. 程式人生 > >函式dup和dup2

函式dup和dup2

函式原型:

#include<unistd.h>
int dup(int oldfd);
                      返回值:若成功,返回新的檔案描述符;若出錯,返回-1

引數:

  • oldfd:要複製的檔案描述符
  • dup呼叫成功:有兩個檔案描述符指向同一個檔案
  • 返回值:取最小的且沒被佔用的檔案描述符

函式原型:

#include<unistd.h>
int dup2(int oldfd, int newfd);
                      返回值:若成功,返回新的檔案描述符;若出錯,返回-1

分析:

  • 假設newfd已經指向一個檔案,首先斷開close與那個檔案的連結,newfd指向oldfd指向的檔案。(檔案描述符重定向)
  • 假設呼叫函式dup2前oldfd與newfd指向同一個檔案,呼叫函式什麼也不做。
  • newfd沒被佔用,newfd指向oldfd指向的檔案。

測試程式碼: