#dup
ファイル・ディスクリプタのコピー
#include <unistd.h>
int dup(int oldfd);
int dup2(int oldfd, int newfd);
dup
int dup(int oldfd);
###引数
oldfd
コピー元になるファイル・ディスクリプタ。
###戻り値
新しい番号をもつファイル・ディスクリプタのコピー。
エラーの場合-1。
あたらにコピーとして作成されるファイル・ディスクリプタは未使用のディスクリプタで最小の番号。
コピー元、新しいコピーディスクリプタは同じディスクリプタを参照している。
よって、ファイル状態など、一方に加えた変更は他方に影響する。
ただしClose On Execフラグは共有されないことに注意。
##dup2
int dup2(int oldfd, int newfd);
###引数
oldfd
コピー元のファイル・ディスクリプタ。
無効なファイル・ディスクリプタが指定された場合、失敗する。
その場合newfdはクローズされない。
newfd
利用したいディスクリプタの番号を指定。
oldfdと同じ番号の場合、なにもせず、newfdを返す。
###戻り値
新しい番号をもつファイル・ディスクリプタのコピー。
エラーの場合-1。
newfdがオープン済みの場合、暗黙的にクローズされてから、再利用される。
この再利用処理はアトミックに行われる。