Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ fdopen(3S) — NEWS-os 3.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

open(2)

fclose(3)

FOPEN(3S)  —  UNIX Programmer’s Manual

名称

fopen, freopenm, fdopen  −  ストリームをオープンする

形式

#include <stdio.h>

FILE ∗fopen(filename, type)
char ∗filename, ∗type;

FILE ∗freopen(filename, type, stream)
char ∗filename, ∗type;
FILE ∗stream;

FILE ∗fdopen(fildes, type)
char ∗type;

解説

fopen は、 filename で指定されたファイルをオープンし、 ストリームをそれに接続します。 fopen は、 後続の操作でこのストリームを 識別するのに使用するポインタを返します。

type は次の値のうちのひとつを持つ文字列です。

"r" 読み込み用にオープンする。

"w" 書き込み用に作成する。

"a" 追加 : ファイルの終わりに書き込むようにオープンする。 または書き込み用に作成する。

さらに、 各 type の後に "+" を続けて、 読み込みと書き込みの両用にファイルを オープンすることができます。 "r+" は、ストリームがファイルの先頭を指すようにし、 "w+" は、ファイルを作成するか、 あるいはファイルの長さをゼロにします。 "a+" は、ファイルの最後を指すようにします。 読み込み/書き込みストリーム上では、 何回でも読み/書きが可能です。 ただし、read の後に write を行う場合(または、その逆の場合)、 その間に fseek、 または rewind、 または end-of-file の読み込みの、 いずれかを行なわなければならないという制限はあります。

freopen は、 オープンしている stream を、 指定したファイルに置き換えます。 これは stream の元の値を返します。 元のストリームはクローズされます。

freopen は通常、 stdin、stdout、stderr のような既にオープンされている定数名を、 指定のファイルに接続するのに使用します。

fdopen は、ストリームを open または dup、creat、pipe(2) から得たファイルディスクリプタと接続します。 ストリームの type は、 オープンファイルのモードに合っていなければなりません。

関連事項

open(2), fclose(3)

診断

filename がアクセス不可能な場合、 オープンしたファイルが多すぎた場合、 または必要なリソースが割り付けられなかった場合には、 fopen と freopen は NULL ポインタを 返します。

バグ

fdopen は、 UNIX以外のシステムには移植不可能です。

読み込み/書き込みの type は、 すべてのシステムに存在するわけではありません。 読み込み/書き込みモードのないシステムでは、 おそらくこの型を "+" が存在しないかのように扱います。 これらは、 いかなる場合でも信頼できません。

システムがサポートするのと同じ数のオープンファイルを サポートするためには、 すでに 20 ファイルをオープンしてしまった後、 fopen は、 calloc を使用するデータ構造体用として追加のメモリを 割り付けなければなりません。 これは独自のメモリ割り付けを使用しているプログラムを 混乱させます。 解説されていないルーチン f_prealloc をコールすれば、 バッファ以外のすべての内部メモリの即時割り付けを 強制的に行うことができます。

NEWS-OSRelease 3.3

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026