2

インターネット上の多くの記事では、「標準入出力/エラーストリーム」という用語が、他の記事で使用されている「標準入出力/エラーデバイス」という用語と同じ意味であるかのように使用されています。たとえば、多くの記事では、標準出力ストリームがデフォルトでモニターであると述べていますが、ファイル、プリンター、またはその他のデバイスにリダイレクトできます。

例として標準出力を見てみましょう。

  1. 標準出力ストリームと標準出力デバイスの違いは何ですか?もしあれば、それらの間の関係は何ですか?

    GetStdHandle()のヘルプページから引用、

    「プロセスの標準ハンドルは、 SetStdHandleの呼び出しによってリダイレクトされる場合があります。その場合、GetStdHandleはリダイレクトされたハンドルを返します。」

  2. 実際にリダイレクトされるのは、標準出力ストリームと標準出力デバイスのどちらですか?

  3. 各プロセスには独自の標準ストリームがありますか?

4

1 に答える 1

7

出力デバイスは、データを書き込むことができる論理エンティティです。

出力ストリームは、出力デバイスへの接続です。

プロセスには、標準出力デバイスに接続された標準出力ストリームがあります。つまり、データを標準出力ストリームに書き込むと、そのデータが標準出力デバイスに出力されます。もちろん、プロセスの開始後にストリームがバインドされるデバイスを実際に変更することもできます。

最後の質問に答えるには、答えは「はい」です。各プロセスには独自の標準ストリームがあります。これが実際にどのデバイスにマップされるかは、オペレーティングシステムとプロセスの開始方法によって異なります。たとえば、LinuxまたはWindowsのコンソールから直接開始されるプロセスには、デフォルトでそのコンソールにリンクされた標準出力ストリームがあります。ただし、このストリームは、ハードウェアデバイスまたはファイルを参照するために「>」を使用するか、一連のプログラムに標準出力ストリームを相互にリダイレクトさせるために使用できる「配管」を使用してリダイレクトできます。

例: echo hi > example.txt引数「hi」を指定してプログラム「echo」を起動し、標準出力ストリームをファイル「example.txt」に設定します。

同様に、各プロセスには、標準の入力ストリームと標準のエラー(出力)ストリームもあります。

于 2013-01-28T16:15:02.737 に答える