• ベストアンサー

ファイルを開く、ストリームを結びつける、とは?

C言語の標準関数の説明の中に、 「ファイルを開く」 「ストリームと結びつける」 といった表現がでてくるのですが、これはどういう意味ですか? freopenを理解しようとしていたのですが・・・。 ファイルを開くとはFILE構造体を展開する?ファイルディスクリプタをシステムに登録する?・・・意味がいまいち掴めません。「ストリームと結びつける」も同様です。 これらは具体的にどういう意味なのでしょうか?回答よろしくお願いします。

noname#113783
noname#113783

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

  • ベストアンサー
  • YEND77
  • ベストアンサー率56% (21/37)
回答No.2

「C言語の標準関数の説明の中」というのはなにかの本orサイトですか? その中の文章のなかでのその2つの言葉がわからないということですよね。 その文章が特段わかりづらく書いてあるだけなのかな? googleで、freopenをひくと一番上にでてくる http://www9.plala.or.jp/sgwr-t/lib/freopen.html のページで、いうとどこら辺がわからないですか?

noname#113783
質問者

お礼

読んでみましたが、要するに既存のFILE構造体を横取りしてstreamに成り代わる、ということであってますか?

noname#113783
質問者

補足

回答の追加なのですが、検索をかけていたら意味がわかりました。 リダイレクトの関数だったんですね。 回答ありがとうございました!

その他の回答 (1)

  • YEND77
  • ベストアンサー率56% (21/37)
回答No.1

ストリームの意味は解りますか?

noname#113783
質問者

補足

この場合入出力装置を抽象化した抽象データ型、ですよね? ファイルディスクリプタのことですか・・・? ごめんなさいちょっとよくわからないです。

関連するQ&A

  • 標準ストリームが理解できません

    標準ストリームの意味が理解できず困っています。 色々なサイトを回って調べてみたのですが、あるサイトではデータが通る経路だと書かれていたり、またあるサイトでは入出力装置から情報を受け取ったり情報を渡したりするということだ、と書かれていたりなにが正しいのかさっぱりです。 普通に標準入出力関数とかは使ってきましたが、stdin等は理解しておく必要がありますよね?標準ストリームは具体的にどういう物か教えていただけたらうれしいです。回答お待ちしています。

  • ストリームについて具体的に

    ストリームは入出力装置へのアクセスのための情報を抽象化した抽象データ型だそうですが(Wikipediaより)、それは具体的にどうなっているのですか?FILE構造体のようなものでしょうか。 ・ストリームにはどんな情報が入っているのですか? ・ストリームはどこに展開されているのですか?メモリでしょうか。 あと、プログラミングは初心者なのでチンプンカンプンな質問をしているかも知れません。その場合は「何か勘違いしてますよ~」と指摘してくださると嬉しいです。回答お待ちしています。

  • アセンブリ言語とC言語について。

    以下のURLで、 https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al … No.14のC 言語の write の仕様そのもので、第一引数はファイルディスクリプタですね。 (ファイルディスクリプタについては御自身で調べてみてください) 固定値として定義されているのは、標準ストリーム ファイルの  0 … 標準入力 (write では使われない)  1 … 標準出力  2 … 標準エラー出力 です。(3 以降は各プロセスでオープンされたファイルやソケットやデバイスを 指しており、固定値ではなくプロセス毎に異なる値となります。) 括弧の所がよくわかりません。教えていただけると幸いです。すみません。

  • Linuxのファイルハンドルとファイルディスクリプタの違い

    こんにちわ。 Linuxのファイルハンドルおよびファイルディスクリプタについて質問があります。 /proc/sys/fs/file-nrにはファイルハンドルに関する3つの値があるかと思います が、それとは別にulimit -aを実行したときに表示されるopen filesの値があるか と思います。 後者のulimitで表示されるopen filesの値はファイルディスクリプタの最大値だと 理解しておりますが、これと上記/proc/sys/fs/file-nr、/proc/sys/fs/file-max で表示されるファイルハンドルの最大数との関連性がわからなくなって来ました。 ファイルハンドルはファイルを開く際にメモリ上に確保されるエリア、 ファイルディスクリプタはオープンしたファイルに割り当てられた 識別子という理解は間違ってるのでしょうか? そもそもulimitはユーザの制限なので/proc/sys/fs/file-maxで設定 されている以上の値(ファイル管理テーブルの最大エントリ数)をopen filesには指定 できないという理解でいいでしょうか?

  • アセンブリ言語について。

    以下のURLで、 https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al … No.14のC 言語の write の仕様そのもので、第一引数はファイルディスクリプタですね。 (ファイルディスクリプタについては御自身で調べてみてください) 固定値として定義されているのは、標準ストリーム ファイルの  0 … 標準入力 (write では使われない)  1 … 標準出力  2 … 標準エラー出力 です。(3 以降は各プロセスでオープンされたファイルやソケットやデバイスを 指しており、固定値ではなくプロセス毎に異なる値となります。) 括弧の所がよくわかりません。教えていただけると幸いです。すみません。 ファイルディスクプリタとは、ファイルへの通り道につけられる番号でファイルを識別する目印のことでしょうか?プロセスとは処理のことでしょうか?詳しく教えていただけると幸いです。すみません。

  • ファイルの中身を0と1で表現したい。

    私の父(パソコン初心者)はどこで聞いたのか、「パソコンっていうのは、0と1だけで構成されているんだよな。どうやったら見えるんだ」と言いました。 要するに、ファイルを指定して、0と1でそれが表示できればいいんだと思います。 私のPC(Windows98SE)にはVC++6.0が入ってまして、簡単だったら作ってみようと思いました。 私は、言語はC言語しか知らないので、C言語で考えてみようと思いました。 実は私のてもとには『C言語プログラミングの落とし穴』(柴田望洋著)という本がありまして、「ファイルのダンプ」というほとんどそれに近いようなプログラム(1ページくらい)があり、16進数で表現するようです。 そのプログラムの骨組みを書きます。 main関数とdump関数というもので構成されています。 main関数はファイルをオープンしてファイルポインタ(FILE*)をdumpファイルに渡し、最後にクローズするだけです。 dump関数は、ファイルポインタを受け取ります。dump関数の一番大切と思われるところを抜き出します。 void dump(FILE *src, FILE *dst) { ..... while ( (n = fread(buf, 1, 16, src) ) > 0 ){ ..... for( i=0; i<n; i++) fprintf(dst, "%02X ", (unsigned)buf[i]); ..... } ..... } あとは単に、2進数で表現すればいいのだろうと思います。 そうだとしたら、2進数で表現するにはどうすればよいですか。 16進数を2進数に変換する部分を作ればよいのでしょうか。 尚、父のPCはWindowsXPです。

  • C#で、Cのファイルポインタ(?)のような機能

    プログラムの初心者、かつ、C#の初心者です。  C言語では、ファイルポインタを関数から関数へ渡すことができると思うのですが、C# ではどのようにすれば良いのですか? C#を使っていますが、C言語のような構造でプログラムを書いています。  やりたいことは、ファイルポインタを渡しながら、各関数で、ドカドカと計算結果をファイル内に書いていくということです。  宜しくお願いいたします。

  • 再帰関数のインライン展開

    再帰関数のインライン展開は出来るのでしょうか? もし、出来るようならアセンブラではどのように表現されているんですか? C以外の言語でも、再帰関数のインライン展開が出来るプログラム言語があれば教えてください。

  • 基本的なことを勉強したあとはどうすればよいのでしょうか。

    基本的なことを勉強したあとはどうすればよいのでしょうか。 入門書などで、ポインタや構造体など一通りのことを勉強しましたが、使っている関数が <stdio.h>の標準関数だけでした。 この標準関数というものを調べてみましたが、どうやらあまり高機能でないというか Windowsで使えるようなアプリケーション開発を行うのは無理があるようです といっても、すぐにアプリケーションが作れるとは思っていないのですが このあとどういう勉強をしたらよいでしょうか。 最終的な目標としては、C言語を通してOSの仕組みやPCの基本的な構造を理解できればと思っています。

  • ファイル一覧を取得できる関数

    C言語で、あるディレクトリのファイルの一覧を取得できるような関数を知ってる方いませんか? 教えてください。 また、なるべくプラットフォームを選ばないようにしたいので、標準関数であればベストです。

専門家に質問してみよう