-PR-
解決済み

ファイルディスクリプタとは?

  • 困ってます
  • 質問No.299104
  • 閲覧数2654
  • ありがとう数9
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 57% (176/308)

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

よろしくお願いいたします。
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル8

ベストアンサー率 36% (12/33)

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

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

ちょっと解りにくいですかね?
お礼コメント
Wingard

お礼率 57% (176/308)

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

その他の回答 (全4件)

  • 回答No.1
レベル11

ベストアンサー率 24% (115/469)

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

0,1,2の番号は

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

として使用されているため、ファイルディスクリプタは3から順番に番号が割り振られる。
お礼コメント
Wingard

お礼率 57% (176/308)

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


  • 回答No.3

 パソコン用語辞典には無いけどグーグルの検索で
http://www.soi.wide.ad.jp/class/99009/slides/02/31.html
http://www.soi.wide.ad.jp/class/99009/slides/02/30.html

 説明が書いてありますから。
お礼コメント
Wingard

お礼率 57% (176/308)

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

すみません、もともと文型でして、
こういう難しい用語を並べられると混乱してしまいます。
ぜひ、文型にも分かるようにご説明いただけないでしょうか;;
よろしくお願いいたします>_<
投稿日時 - 2002-06-24 18:15:04
  • 回答No.4

 ↓ このサイトの方が具体例が表示して有るけど。
お礼コメント
Wingard

お礼率 57% (176/308)

ありがとうございました。
とても参考になりました。
とはいえ、理解するにはもう少し時間がかかりそうです・・・。
投稿日時 - 2002-06-25 09:34:41
  • 回答No.5
レベル8

ベストアンサー率 36% (12/33)

 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()関数の引数は、例を見やすくするため、省略して書いていますが、実際に使用するときは、正確に書いて下さいね。
お礼コメント
Wingard

お礼率 57% (176/308)

ご回答ありがとうございました。
なんとなく、理解できてきたような気がします。
もう少し勉強してみます。
ありがとうございました^^
投稿日時 - 2002-06-25 09:36:01
このQ&Aで解決しましたか?
関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

ページ先頭へ