jpman project specific RCS keyword (jpman %Id) is obsolete, after manual entries are stored in freefall CVS repository. This old Id is useless and more worse it confuses users and bug reporters. So, this old Id is removed. Submitted by:jpman project <man-jp@jp.FreeBSD.org>
294 lines
9.1 KiB
Groff
294 lines
9.1 KiB
Groff
.\" Copyright (c) 1990, 1991, 1993
|
|
.\" The Regents of the University of California. All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
.\" must display the following acknowledgement:
|
|
.\" This product includes software developed by the University of
|
|
.\" California, Berkeley and its contributors.
|
|
.\" 4. Neither the name of the University nor the names of its contributors
|
|
.\" may be used to endorse or promote products derived from this software
|
|
.\" without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" @(#)stdio.3 8.7 (Berkeley) 4/19/94
|
|
.\"
|
|
.\" $FreeBSD$
|
|
.Dd April 19, 1994
|
|
.Dt STDIO 3
|
|
.Os BSD 4
|
|
.Sh 名称
|
|
.Nm stdio
|
|
.Nd 標準I/Oライブラリ関数
|
|
.Sh 書式
|
|
.Fd #include <stdio.h>
|
|
.Fd FILE *stdin;
|
|
.Fd FILE *stdout;
|
|
.Fd FILE *stderr;
|
|
.Sh 解説
|
|
標準
|
|
.Tn I/O
|
|
ライブラリは、簡単で効率的なバッファされたストリーム
|
|
.Tn I/O
|
|
インタフェースを提供します。
|
|
入力と出力は論理的データストリームにマップされ、
|
|
物理的な
|
|
.Tn I/O
|
|
特性値は隠されます。関数およびマクロは下に示す通りですが、
|
|
それぞれに関する個別のマニュアルページにさらに詳しい説明があります。
|
|
.Pp
|
|
ファイルを
|
|
.Em 開く
|
|
と外部ファイル(物理的デバイスである場合もある)には
|
|
ストリームが結合されますが、その際には新規ファイルが
|
|
作成されることもあります。既存のファイルを作成すると、そのファイルの以前の
|
|
内容は廃棄されます。
|
|
ファイルが位置決定要求(端末ではなく、ディスクファイルというような)を
|
|
サポートする場合は、そのファイルをアペンドモードで開かない限り、
|
|
ストリームに結合された
|
|
.Em ファイル位置指示子
|
|
がファイルの先頭(バイト 0)に置かれます。アペンドモードを使った場合は、
|
|
位置指示子はファイルの最後に置かれます。
|
|
位置指示子は以降の読み取り、書込み、位置決定の
|
|
要求によって維持されます。すべての入力はあたかもキャラクタが
|
|
.Xr fgetc 3
|
|
関数の連続的な呼び出しによって読み取られたかのようにして行われ、すべての
|
|
出力はすべてのキャラクタが
|
|
.Xr fputc 3
|
|
関数の連続的な呼び出しによって
|
|
書込まれたかのようにして行われます。
|
|
.Pp
|
|
ファイルは、そのファイルを
|
|
.Em 閉じる
|
|
ことによってストリームとの結合が解除されます。
|
|
出力ストリームは、ファイルとの結合が解除される前にフラッシュされます
|
|
(書込まれなかったバッファ内容はホスト環境に送られます)。
|
|
.Dv FILE
|
|
オブジェクトへのポインタの値は、ファイルを閉じた後は
|
|
不定(くず)になります。
|
|
.Pp
|
|
ファイルは、同じプログラムまたは別のプログラムを実行することにより後で
|
|
再び開くこともでき、その内容は再生利用されるかまたは修正されます
|
|
(スタート時にファイルが再度配置できる場合)。メインの関数が元の呼び出し元に
|
|
返るか、または
|
|
.Xr exit 3
|
|
関数が呼び出された場合は、プログラムを終了する前にすべての開いたファイルを
|
|
閉じます(従って、すべての出力ストリームはフラッシュされます)。
|
|
プログラムを終了するその他の方法ではファイルを適切に閉じない
|
|
場合があり、従ってバッファされた出力が失われる場合があります。特に、
|
|
.Xr _exit 2
|
|
は stdio ファイルをフラッシュしません。シグナルによる exit も同様です。
|
|
.Xr abort 3
|
|
は POSIX が要求するようにバッファをフラッシュしますが、以前の
|
|
実装ではこれを行っていません。
|
|
.Pp
|
|
本実装では、
|
|
.Dq テキスト
|
|
と
|
|
.Dq バイナリ
|
|
のストリームを区別しません。
|
|
その結果、すべてのストリームはバイナリになります。
|
|
翻訳は行われず、すべてのストリームには余分のパディングは現れません。
|
|
.Pp
|
|
プログラムのスタートアップ時には、次の3 つのストリームが
|
|
事前定義され、それらを明示的に開く必要はありません。
|
|
.Bl -bullet -compact -offset indent
|
|
.It
|
|
.Em standard input
|
|
(通常入力読み取り用)
|
|
.It
|
|
.Em standard output
|
|
(通常出力書込み用)
|
|
.It
|
|
.Em standard error
|
|
(診断出力書込み用)
|
|
.El
|
|
これらのストリームは、
|
|
.Em stdin
|
|
、
|
|
.Em stdout
|
|
、そして
|
|
.Em stderr
|
|
と略記されます。
|
|
初期には、標準エラーストリームはバッファされていません。標準の入力および
|
|
出力ストリームは、そのストリームが
|
|
.Xr isatty 3
|
|
関数により決定されるような形で
|
|
インタラクティブデバイスまたは
|
|
.Dq 端末
|
|
デバイスを参照しない限りにおいて、完全にバッファされます。
|
|
実際に、端末デバイスを参照する新規に
|
|
開かれた
|
|
.Em すべての
|
|
ストリームは、デフォルトでラインにバッファされ、このような
|
|
ストリームへの未決の出力は、入力ストリームが読み込まれたときは常に自動的に
|
|
書込まれます。
|
|
これは、
|
|
.Dq 真の読み込み
|
|
に対してのみ当てはまることに
|
|
注意してください。読み込み要求がバッファされた既存のデータで間に合う
|
|
場合は、自動的なフラッシュは起きません。この場合、または出力端末にラインの
|
|
一部をプリントした後で大量の計算が行われる場合は、出力が出てくるように先に
|
|
進んで計算を続ける前に、標準出力を
|
|
.Xr fflush 3
|
|
で処理する必要があります。
|
|
その代わりに、これらのデフォルトを
|
|
.Xr setvbuf 3
|
|
関数で修正することもできます。
|
|
.Pp
|
|
.Nm stdio
|
|
ライブラリはライブラリ
|
|
.Nm libc
|
|
の一部であり、
|
|
ルーチンは Cコンパイラによって必要に応じて自動的にロードされます。
|
|
以下のマニュアルの
|
|
.Tn 書式
|
|
部分では、どのインクルードファイルを使えばよいか、関数に対する
|
|
コンパイラの宣言はどのようになるか、どの外部変数に関心を持つべきかを
|
|
示します。
|
|
.Pp
|
|
以下のものはマクロとして定義されています。これらの名称は、現在の定義を
|
|
.Dv #undef
|
|
を使って削除してからでないと再使用することはできません:
|
|
.Dv BUFSIZ ,
|
|
.Dv EOF ,
|
|
.Dv FILENAME_MAX ,
|
|
.Dv FOPEN_MAX ,
|
|
.Dv L_cuserid ,
|
|
.Dv L_ctermid ,
|
|
.Dv L_tmpnam,
|
|
.Dv NULL ,
|
|
.Dv P_tmpdir,
|
|
.Dv SEEK_CUR ,
|
|
.Dv SEEK_END ,
|
|
.Dv SEEK_SET ,
|
|
.Dv TMP_MAX ,
|
|
.Dv clearerr ,
|
|
.Dv feof ,
|
|
.Dv ferror ,
|
|
.Dv fileno ,
|
|
.Dv fropen ,
|
|
.Dv fwopen ,
|
|
.Dv getc ,
|
|
.Dv getchar ,
|
|
.Dv putc ,
|
|
.Dv putchar ,
|
|
.Dv stderr ,
|
|
.Dv stdin ,
|
|
.Dv stdout ,
|
|
.Dv vfscanf
|
|
。
|
|
マクロ関数
|
|
.Fn clearerr ,
|
|
.Fn feof ,
|
|
.Fn ferror ,
|
|
.Fn fileno ,
|
|
.Fn getc ,
|
|
.Fn getchar ,
|
|
.Fn putc ,
|
|
および
|
|
.Fn putchar
|
|
には関数バージョンが存在し、
|
|
マクロ定義が明示的に削除された場合にはそれが使われます。
|
|
.Sh 参照
|
|
.Xr close 2 ,
|
|
.Xr open 2 ,
|
|
.Xr read 2 ,
|
|
.Xr write 2
|
|
.Sh バグ
|
|
標準のバッファされた関数は、他のライブラリおよび
|
|
システム関数のあるもの、特に
|
|
.Xr vfork 2
|
|
とはうまくインタラクトできません。
|
|
.Sh 規格
|
|
.Nm stdio
|
|
ライブラリは、
|
|
.St -ansiC
|
|
に準拠しています。
|
|
.Sh 関数一覧
|
|
.Bl -column "Description"
|
|
.Sy 関数 説明
|
|
asprintf フォーマットされた出力の変換
|
|
clearerr ストリームステータスのチェックとリセット
|
|
fclose ストリームを閉じる
|
|
fdopen ストリームを開く関数
|
|
feof ストリームステータスのチェックとリセット
|
|
ferror ストリームステータスのチェックとリセット
|
|
fflush ストリームのフラッシュ
|
|
fgetc 入力ストリームから次のキャラクタまたはワードを取得
|
|
fgetln ストリームから1 行を取得
|
|
fgetpos ストリームの再配置
|
|
fgets ストリームから1 行を取得
|
|
fileno ストリームステータスのチェックとリセット
|
|
fopen ストリームを開く関数
|
|
fprintf フォーマットされた出力の変換
|
|
fpurge ストリームのフラッシュ
|
|
fputc 1 キャラクタまたは 1 ワードをストリームに出力
|
|
fputs 1 行をストリームに出力
|
|
fread バイナリストリームの入力/出力
|
|
freopen ストリームを開く関数
|
|
fropen ストリームを開く
|
|
fscanf 入力フォーマット変換
|
|
fseek ストリームの再配置
|
|
fsetpos ストリームの再配置
|
|
ftell ストリームの再配置
|
|
funopen ストリームを開く
|
|
fwopen ストリームを開く
|
|
fwrite バイナリストリームの入力/出力
|
|
getc 入力ストリームから次のキャラクタまたはワードを取得
|
|
getchar 入力ストリームから次のキャラクタまたはワードを取得
|
|
gets ストリームから 1 行を取得
|
|
getw 入力ストリームから次のキャラクタまたはワードを取得
|
|
mkdtemp ユニークなテンポラリファイルを作成
|
|
mkstemp ユニークなテンポラリファイルを作成
|
|
mktemp ユニークなテンポラリファイルを作成
|
|
perror システムエラーメッセージ
|
|
printf フォーマットされた出力変換
|
|
putc 1 キャラクタまたはワードをストリームに出力
|
|
putchar 1 キャラクタまたはワードをストリームに出力
|
|
puts 1 行をストリームに出力
|
|
putw 1 キャラクタまたはワードをストリームに出力
|
|
remove ディレクトリエントリの削除
|
|
rewind ストリームの再配置
|
|
scanf 入力フォーマット変換
|
|
setbuf ストリームのバッファリング操作
|
|
setbuffer ストリームのバッファリング操作
|
|
setlinebuf ストリームのバッファリング操作
|
|
setvbuf ストリームのバッファリング操作
|
|
snprintf フォーマットされた出力変換
|
|
sprintf フォーマットされた出力変換
|
|
sscanf 入力フォーマット変換
|
|
strerror システムエラーメッセージ
|
|
sys_errlist システムエラーメッセージ
|
|
sys_nerr システムエラーメッセージ
|
|
tempnam テンポラリファイルルーチン
|
|
tmpfile テンポラリファイルルーチン
|
|
tmpnam テンポラリファイルルーチン
|
|
ungetc 入力ストリームからのキャラクタの取得を元に戻す
|
|
vasprintf フォーマットされた出力変換
|
|
vfprintf フォーマットされた出力変換
|
|
vfscanf 入力フォーマット変換
|
|
vprintf フォーマットされた出力変換
|
|
vscanf 入力フォーマット変換
|
|
vsnprintf フォーマットされた出力変換
|
|
vsprintf フォーマットされた出力変換
|
|
vsscanf 入力フォーマット変換
|
|
.El
|