dポイントプレゼントキャンペーン実施中!

要所要所で「ファイルディスクリプタ」といった単語が出てきているのですが、
どこで調べてもはっきりとした意味がわかりません。
なんとなく、3種類の数値を返すといったことはわかったのですが、
ファイルディスクリプタの意味をもっと詳しく、丁寧にご解説いただけませんでしょうか。

よろしくお願いいたします。

A 回答 (5件)

「ファイルディスクリプタ」は、「ファイル記述子」・「ファイルハンドル」とも言われます。


これは、入出力できるファイルを管理するもので、0~255の値を持ちます。
ファイルディスクリプタは、ファイルを1つ開くとそのファイルに対して、ユニークな数値を割り当てられます。

>>なんとなく、3種類の数値を返す
これは、関数の仕様の話だと思いますが、たとえば、open()関数では、ファイルが開けたら、ファイルディスクリプタを戻り値として、エラーの場合は、ファイルディスクリプタに存在しない数値である「ー1」を返しています。

ちょっと解りにくいですかね?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
つまり、ファイルを開いたときに、その開いたファイルによって固有の数値が帰ってくる、
と考えてよろしいのでしょうか・・・?
で、もしファイルが開けなかったときには「-1」が帰ってくる・・・。
これであっているとすれば、なんとなく理解できました。
ありがとうございました。

お礼日時:2002/06/24 17:29

 7_7_7さんと私の回答を合わせて、理解していただけたのでしたら、幸いです。



 私の回答のところでかかれていた質問ですが、そう理解していただいて良いと思います。

ただ、以下の例が示すように、オープンする順番により、与えられるファイルディスクリプタの値が変わることを理解しておいて下さい。

(例1)
fd_a = open( "A", ....);/* fd_a=4となる */
fd_b = open( "B", ....);/* fd_b=5となる */

(例2)
fd_b = open( "B", ....);/* fd_b=4となる */
fd_a = open( "A", ....);/* fd_a=5となる */

※open()関数の引数は、例を見やすくするため、省略して書いていますが、実際に使用するときは、正確に書いて下さいね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
なんとなく、理解できてきたような気がします。
もう少し勉強してみます。
ありがとうございました^^

お礼日時:2002/06/25 09:36

 ↓ このサイトの方が具体例が表示して有るけど。



参考URL:http://x68000.startshop.co.jp/~68user/net/c-open …
    • good
    • 0
この回答へのお礼

ありがとうございました。
とても参考になりました。
とはいえ、理解するにはもう少し時間がかかりそうです・・・。

お礼日時:2002/06/25 09:34

 パソコン用語辞典には無いけどグーグルの検索で


http://www.soi.wide.ad.jp/class/99009/slides/02/ …
http://www.soi.wide.ad.jp/class/99009/slides/02/ …

 説明が書いてありますから。

参考URL:http://www.soi.wide.ad.jp/class/99009/slides/02/ …
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。
このサイト、探せませんでした・・・。
参照させていただいたのですが、
やはり私が理解するには難しくて・・・。

すみません、もともと文型でして、
こういう難しい用語を並べられると混乱してしまいます。
ぜひ、文型にも分かるようにご説明いただけないでしょうか;;
よろしくお願いいたします>_<

お礼日時:2002/06/24 18:15

プログラム内でopenされているファイルを識別するために割り振る番号。



0,1,2の番号は

0標準入力
1標準出力
2標準エラー出力

として使用されているため、ファイルディスクリプタは3から順番に番号が割り振られる。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
すみません、やっと意味がわかりました。
Lara-Portさんの説明と合わせて考えると、
つまり帰ってくる数値は4つだけじゃないってことなんですね。
ただ、もう少し詳しく説明いただけないでしょうか・・・。

お礼日時:2002/06/24 18:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!