扼要比較C說話中的dup()函數和dup2()函數。本站提示廣大學習愛好者:(扼要比較C說話中的dup()函數和dup2()函數)文章只能為提供參考,不一定能成為您想要的結果。以下是扼要比較C說話中的dup()函數和dup2()函數正文
C說話dup()函數:復制文件描寫詞
頭文件:
#include <unistd.h>
界說函數:
int dup (int oldfd);
函數解釋:dup()用來復制參數oldfd 所指的文件描寫詞, 並將它前往. 此新的文件描寫詞和參數oldfd 指的是統一個文件, 同享一切的鎖定、讀寫地位和各項權限或旗標. 例如, 當應用lseek()對某個文件描寫詞感化時, 另外一個文件描寫詞的讀寫地位也會跟著轉變. 不外, 文件描寫詞之間其實不同享close-on-exec 旗標.
前往值:當復制勝利時, 則前往最小及還沒有應用的文件描寫詞. 如有毛病則前往-1, errno 會寄存毛病代碼.
毛病代碼:EBADF 參數fd 非有用的文件描寫詞, 或該文件已封閉.
C說話dup2()函數:復制文件描寫詞
頭文件:
#include <unistd.h>
界說函數:
int dup2(int odlfd, int newfd);
函數解釋:dup2()用來復制參數oldfd 所指的文件描寫詞, 並將它拷貝至參數newfd 後一塊前往. 若參數newfd為一已翻開的文件描寫詞, 則newfd 所指的文件會先被封閉. dup2()所復制的文件描寫詞, 與本來的文件描寫詞同享各類文件狀況, 概況可參考dup().
前往值:當復制勝利時, 則前往最小及還沒有應用的文件描寫詞. 如有毛病則前往-1, errno 會寄存毛病代碼.
附加解釋:dup2()相當於挪用fcntl(oldfd, F_DUPFD, newfd).
毛病代碼:EBADF 參數fd 非有用的文件描寫詞, 或該文件已封閉