「stdout」に書き込むプログラムはファイルに書き込みますか?スクリーン? stdoutに書き込むことの意味がわかりません。
これは、セッションのメイン出力デバイスに出力を印刷していることを意味します。ユーザーのコンソール、ttyセッション、ファイル、または誰が何を知っているか。そのデバイスが何であるかは、プログラムの実行方法と場所によって異なります。
次のコマンドは、標準出力デバイス(stdout)に書き込みます...
printf( "hello world\n" );
これは、本質的にこれを行う別の方法です...
fprintf( stdout, "hello world\n" );
この場合、stdout
は、アプリケーションのデフォルトの出力デバイスを表すFILE
ストリームへのポインターです。また使用することができます
fprintf( stderr, "that didn't go well\n" );
この場合、アプリケーションの標準エラー出力デバイスに出力を送信します。これは、stdout
と同じ場合もそうでない場合もあります-stdout
、stderr
は、エラーメッセージのデフォルトの出力デバイスを表すFILE
ストリームへのポインターです。
場合によります。
stdout
への出力の送信をコミットする場合、基本的には、出力をどこに送るかを決定するのはユーザーに任されています。
printf(...)
(または同等のfprintf(stdout, ...)
)を使用する場合、出力をstdout
に送信しますが、実際にどこで終わるかは、どのように呼び出すかによって異なりますプログラム。
このようにコンソールからプログラムを起動すると、コンソールに出力が表示されます。
_$ prog
Hello, World! # <-- output is here on my console
_
ただし、このようなプログラムを起動して、コンソールに出力を生成しない場合があります。
_$ prog > hello.txt
_
しかし、「Hello、World!」というテキストを含むファイル「hello.txt」が作成されます。内部では、シェルのリダイレクト機能のおかげです。
誰が知っている-私は他のデバイスを接続することさえでき、出力はそこに行くことができます。ポイントは、stdout
に印刷することにした場合(たとえばprintf()
を使用して)、プロセスの起動方法または使用方法を確認するまで、どこに移動するかを正確に知ることができないということです。 。
stdout
は標準出力ストリームを表し、オペレーティングシステム自体がプログラムで使用できるストリームです。 stdin
およびstderr
と共にプログラムは最初からすでに利用可能です。
それらが指す(または指す)ものは何でもかまいません。実際には、ストリームはプログラムにデータを送信または取得するためのインターフェースとして使用できるオブジェクトを提供するだけです。デフォルトでは、通常は端末ですが、ファイル、別のプロセスへのパイプなど、どこにでもリダイレクトできます。
stdoutは標準出力ファイルストリームです。明らかに、これが最初であり、出力へのデフォルトのポインターは画面ですが、必要に応じてファイルを指すことができます!
読んでください:
http://www.cplusplus.com/reference/cstdio/stdout/
C++はCに非常に似ていますが、オブジェクト指向です。
stdout
は、UNIXの標準出力ストリームです。 http://www.gnu.org/software/libc/manual/html_node/Standard-Streams.html#Standard-Streams を参照してください。ターミナルで実行すると、ターミナルのstdout
に書き込まれたデータが表示され、選択したとおりにリダイレクトできます。
@K Scott Pielが ここでは素晴らしい答え を書いたが、一つ重要な点を付け加えたい。
stdout
ストリームは 通常はラインバッファリング であるため、出力が実際に印刷され、書き込み待ちのバッファに残っているだけではないことに注意してくださいmustprintf
ステートメントを_\n
_で終了することにより、バッファをフラッシュします
例:
_printf("hello world\n");
_
または
_printf("hello world");
printf("\n");
_
または同様に、OR printf
呼び出しの後にfflush(stdout);
を呼び出す必要があります。
例:
_printf("hello world");
fflush(stdout);
_