• ベストアンサー

ストリームについて

ストリームってよくファイル操作の時に聞きますが 最近、stdinとかsdterrとかかかわってくるとまたストリームという単語がでてきます・・・・ いったいストリームという行為は目に見えないところでどんなことがおきているんですか??

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★ファイル・ストリームに限定してお話します。 ・まず、ファイル・システムを少しだけお話します。 ・1つのファイルは複数のクラスタという部屋にデータを保存(記録)します。  そして、それぞれのクラスタを鎖のように繋いで1つのファイル・データとして Windows は  管理して扱います。→サイズが小さいファイルは1クラスタですが、大きいファイルは複数の  クラスタに分けられる。そして、鎖のように繋げて管理します。 ・それでプログラムがファイルを読み出すときは、1つのファイルとして Windows からデータを  読める構造にしたのが『ストリーム』です。アプリケーションからは複数あるクラスタの繋ぎ  情報をたどって読み込まなくて済みます。→とても便利です。 ・この『ストリーム』とは、ファイルの先頭から末尾までを連続するデータの塊として扱い、  英単語では『stream』で、意味は『流れ』です。つまり、ファイルの先頭から末尾までの一連  の流れを『ストリーム』で表現して扱うという事です。 ・『ストリーム』には入力と出力があり、それぞれ『入力ストリーム』、『出力ストリーム』など  と表現をすることがあります。また、ファイル・ストリームにおいては、ファイルを読み込みで  オープンした『ファイル・ポインタ』が『入力ストリーム』、書き込みでオープンした場合は、  『出力ストリーム』にあたります。→読み書き両用でオープンすれば『入出力ストリーム』という  事になります。 ・この『ストリーム』は任意の時点で別のデバイス(装置)に切り替えられたりします。  このとき、stdin とか、stdout とか、stderr などが関わってくるのです。 ・コマンドラインで『入力ストリーム』が『stdin』の場合は、通常『キーボード』ですが、パイプ  処理ならば『画面の出力結果』に、リダイレクトされると『ファイル入力』に切り替わります。 ・つまり、stdin を使うと任意の時点で別の入力に切り替わって、後は『ストリーム』という概念  でデータの先頭から末尾までを処理することになります。 ・stdout は『出力ストリーム』ですが、こちらも状況によって『画面出力』か、『ファイル出力』  に切り替わります。 ・stderr は『出力ストリーム』ですが、『画面出力固定』です。→エラーを出力するときに使います。 最後に: ・stdin は『標準入力』で、キーボードとファイル入力などに切り替わります。 ・stdout は『標準出力』で、ディスプレイとファイル出力などに切り替わります。 ・stderr は『標準エラー出力』で、ディスプレイ固定になります。 ・以上。おわり。→簡単に言えば『ストリーム』とは『データの先頭から末尾の流れ』です。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

適当な説明 プログラムはそれ単体では何の役にも立たず、外界との接点を持たねばならない。 外界とはすなわち入力ファイルであったり、出力ファイルであったり、コンソールの画面であったり、はたまたプリンタであったり。 プログラムでいちいち今回はプリンタに出力するから○○、コンソールからの入力を受け付けるので△△。。。と書くのが面倒くさい。 というわけで、プログラムと外界との入出力インターフェースを抽象化して利用できるようになっています。それがストリーム。 なので、あるときはコンソールからの入力を stdin から受け取ったり、またあるときはファイルへの出力をファイルストリームに対して行ったりします。でも、プログラムでの使い方はほとんど一緒。こりゃ便利、普段は細かい実装はカーネルにお任せ。

関連するQ&A

専門家に質問してみよう