dup
io.h:インデックス への移動
ヘッダーファイル
io.h
カテゴリ
入出力ルーチン
プロトタイプ
int dup(int handle);
説明
ファイルハンドルを複製します。
- dup は,複製元のファイルハンドルと次の点で同じ新しいファイルハンドルを作成します。
- オープンファイルまたはデバイスが同じ
- ファイルポインタが同じ(一方のファイルポインタを変更すると,もう一方も変更される)
- アクセスモード(読み取り,書き込み,読み書き)が同じ
handle は,creat,open,dup,dup2,_rtl_creat,または _rtl_open の呼び出しによって取得されるファイルハンドルです。
戻り値
成功した場合,dup は,新しいファイルハンドルとして負でない整数を返します。そうでない場合は,-1 を返します。
エラーの場合は,グローバル変数 errno に次のいずれかの値が設定されます。
EBADF |
不正なファイル番号 |
EMFILE |
オープンファイルが多すぎる |
例
#include <string.h>
#include <stdio.h>
#include <io.h>
void flush(FILE *stream);
int main(void)
{
FILE *fp;
char msg[] = "This is a test";
/* ファイルを作成します */
fp = fopen("DUMMY.FIL", "w");
/* ファイルにデータを書き込みます */
fwrite(msg, strlen(msg), 1, fp);
printf("Press ENTER to flush DUMMY.FIL:");
getchar();
/* データを DUMMY.FIL にフラッシュし,ファイルは閉じません */
flush(fp);
printf("\nFile was flushed, Press ENTER to quit:");
getchar();
return 0;
}
void flush(FILE *stream)
{
int duphandle;
/* TC の内部バッファをフラッシュします */
fflush(stream);
/* 複製ファイルハンドルを作成します */
duphandle = dup(fileno(stream));
/* 複製ハンドルを閉じて DOS バッファをフラッシュします */
close(duphandle);
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |