1 .\" From dholland@burgundy.eecs.harvard.edu Tue Mar 24 18:08:15 1998
3 .\" This man page was written in 1998 by David A. Holland
4 .\" and placed in the Public Domain. Polished a bit by aeb.
5 .\" 2005-06-16 mtk, mentioned freopen()
7 .\" 2007-12-08, mtk, Converted from mdoc to man macros
9 .\" Japanese Version Copyright (c) 1998 NAKANO Takeo all rights reserved.
10 .\" Translated 1998-03-22, NAKANO Takeo <nakano@apm.seikei.ac.jp>
11 .\" Updated 2005-09-04, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
13 .TH STDIN 3 2008-07-14 "Linux" "Linux Programmer's Manual"
15 stdin, stdout, stderr \- 標準入出力ストリーム
20 .BI "extern FILE *" stdin ;
21 .BI "extern FILE *" stdout ;
22 .BI "extern FILE *" stderr ;
25 標準の環境では、 UNIX プログラムは起動時に、オープンされているストリー
26 ムを 3 つ与えられる。それぞれ入力用、出力用、診断メッセージやエラーメッ
27 セージの表示用のものである。これらは通常ユーザの端末
29 を見よ) に接続されているが、親プロセスでの選択・設定によってファイル
30 や他のデバイスに関連づけられていることもある
32 の「リダイレクション」セクションも参照のこと)。
34 入力ストリームは "standard input" と呼ばれる。出力ストリームは
35 "standard output"、エラーストリームは "standard error" と呼ばれる。
36 これらの用語を短縮したものがそれぞれのファイルを示すシンボルとなる。つ
45 のマクロで、 FILE へのポインタ型である。したがって
52 は UNIX のファイルディスクリプタにバッファ機能を追加したラッパー
53 であるから、これらのマクロにも対応するファイルがあり、 UNIX の raw ファ
65 に結びつけられているファイルディスクリプタの番号は、
76 を適用することで、そのストリームに関連付けられたファイルディスクリプタ
80 と raw なファイルディスクリプタの併用は、予期できない結果を生じ
81 ることがあるので、通常は避けるべきである。 (マゾヒスティックな人に:
82 POSIX.1 のセクション 8.2.3 には、この混用で動作がどのようになりそう
84 一般的なルールは以下の通り: ファイルディスクリプタはカーネルによって
85 扱われ、 stdio は単にライブラリによって扱われるのである。すなわち例えば
87 の後には、子プロセスはオープンされているファイルディスクリプタ
88 をすべて継承するが、親からのストリームはすべてアクセス不可となる。
94 はすべてマクロとして定義されているので、これらへの代入
95 は移植性を保証されない。標準ストリームはライブラリ関数
97 を用いれば、別のファイルを示すように変更することもできる。
102 の再割り当てが可能なように特別に導入されたものである。
105 の呼び出しと、プログラムの正常終了によってクローズされる。
111 また C89 では、これら 3 つのストリームがプログラム
112 の起動時にオープンされているべきであることが規定されている。
117 ストリームは、端末に接続されているときには行単位でバッファリング
122 が呼び出されるか、改行文字が印字されるまで表示されない。これは、
123 特にデバッグ時において、予期しない結果を生じる原因となるかもしれない。
124 標準ストリームの (あるいは他のすべてのストリームの)
132 が端末に接続されているときは、端末のドライバでバッファリングされている
133 可能性がある点にも注意すること。これは stdio のバッファリングとは全く
134 関係なく存在しうる。 (実際、通常だと端末入力はカーネルによって行単位
135 でバッファリングされている。) このカーネルによる入力の扱いは
137 などの呼び出しによって変更することができる。