プログラムがエラーメッセージや、アサートによるメッセージなどを出力するとき、特に指定がない場合に使われる標準の出力先のことです。
元々は UNIX系の OS に存在する標準ストリームの1つですが、現在では多くの環境、多くのプログラミング言語で採用されています。標準ストリームにはほかに、標準的な入力元である標準入力、標準的な出力先である標準出力があります。
標準ストリームは、プログラムから特別に使用開始の手続きをせずとも、あらかじめ使用可能な状態になっています(正確にはどこかのタイミングで準備されているわけですが、少なくとも意識せずに使えるようにはなっています)。
標準エラーが具体的には何であるかは環境によって異なりますが、多くの場合、ディスプレイ(画面)です。この設定は変更できる場合もあります。また、プログラムが標準エラーに対して出力するように作られていても、リダイレクトによって、実際の出力先を切り替えられる場合もあります。
標準出力と標準エラーはいずれも出力に関するストリームですが、両者は別々のものとして分離されています。そのため、リダイレクトを使えば。それぞれの出力先を別の場所にできます。
また、標準出力はバッファリングされており、標準エラーはバッファリングされていない場合が多いです。その場合は、両者の出力先が同じ場合、出力しようとした順番と、実際の出力の順序が食い違う可能性があります(バッファリングされている標準出力はなんらかの条件を満たすまで出力されずにバッファに蓄えられるが、バッファリングされていない標準エラーへの出力はただちに行われるため)。
C言語の標準ライブラリには stderr という定義があり、FILE構造体のオブジェクトを指すポインタになっています。このオブジェクトは、標準エラーのストリームに結びつけられていて、fprintf関数などのように、FILE構造体のオブジェクトのポインタを引数に持つ関数に渡して使用できるようになっています。
(stderr, "test %d\n", value); fprintf
また、エラーメッセージを出力する用途で perror という関数が存在します。
perror については、C言語編のリファレンスページを参照してください。
外部のファイルに対して出力を行う場合、fopen関数を使って、FILE構造体のオブジェクトを指すポインタを入手する必要がありますが、stderr はプログラムの実行開始直後に自動的に使用可能な状態が整えられています。
stderr については、C言語編のリファレンスページを参照してください。また、FILE構造体のオブジェクトを使ったファイル操作の処理については、C言語編第39章(およびそれ以降の数章)で解説しています。
C++ の標準ライブラリには std::basic_ostream というクラステンプレートがあり、そこから作られる std::cerr というクラスオブジェクトが定義されています。std::cerr を使って、標準エラーへの出力を行えます。
::cerr << "test " << value << "\n"; std
C++ の標準入出力の概要については、C++編【標準ライブラリ】第27章を参照してください。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |