DUP

Section: System Calls (2)
索引 jman

BSD mandoc
 

索引

名称

dup dup2 - 既存のファイル記述子を複製する  

索引

ライブラリ

Lb libc  

索引

書式

In unistd.h Ft int Fn dup int oldd Ft int Fn dup2 int oldd int newd  

索引

解説

Fn dup システムコールは、既存のオブジェクト記述子を複製し、 その値を呼び出しプロセスに返します Fa ( newd = Fn dup oldd ) 。 引数 Fa oldd はプロセスの記述子テーブル内のインデックスで、負でない小さな整数です。 その値はテーブルのサイズより小さくなければなりません。 テーブルのサイズは getdtablesize(2) によって返されます。 Fn dup 呼び出しは、そのときにプロセスによって使用されていない番号のうち、 最も小さい番号の付いた記述子を返します。

記述子が参照するオブジェクトは Fa oldd と Fa newd をまったく区別しません。 したがって Fa newd と Fa oldd がオープンされたファイルへの複製された参照だった場合、すべての read(2), write(2) および lseek(2) 呼び出しは、単一のポインタをファイル内で移動します。 追加モード、ノンブロッキング入出力 および非同期入出力オプションは各参照の間で共有されます。 一つのファイルへの別々のポインタが必要な場合は、追加の open(2) システムコールを呼び出し、ファイルへの異なるオブジェクト参照を 得る必要があります。 このとき、新しいファイル記述子の close-on-exec フラグは設定解除されています。

Fn dup2 には新しい記述子 Fa newd の値を指定します。 この記述子が既に使用されていた場合、 Fa oldd Fa newd であれば、まずその記述子は close(2) システムコールが使用されたかのように割り当て解除されます。 Fa oldd が有効な記述子でなかった場合には、 Fa newd はクローズされません。 Fa oldd == Fa newd であり、しかも Fa oldd が有効な記述子の場合、 Fn dup2 は正常に終了し、何もしません。  

索引

戻り値

いずれかの呼び出しでエラーが起きた場合は値 -1 が返されます。 外部変数 errno はエラーの原因を示します。  

索引

エラー

Fn dup システムコールと Fn dup2 システムコールは、次の場合に処理に失敗します:

Bq Er EBADF
Fa oldd または Fa newd 引数が有効なアクティブ記述子ではありません。
Bq Er EMFILE
アクティブな記述子が多すぎます。

 

索引

関連項目

accept(2), close(2), fcntl(2), getdtablesize(2), open(2), pipe(2), socket(2), socketpair(2)  

索引

規格

Fn dup システムコールと Fn dup2 システムコールは、 St -p1003.1-90 に適合しています。  

索引

歴史

Fn dup 関数と Fn dup2 関数は AT&T System v7 で登場しました。


 

索引

Index

名称
ライブラリ
書式
解説
戻り値
エラー
関連項目
規格
歴史

jman



Time: 07:06:25 GMT, January 12, 2009