トップ その他 IT用語 ファイルディスクリプタとは

ファイルディスクリプタとは―WindowsやLinuxなどOSで利用される識別子。

WindowsやLinuxなどOS上のプロセスは、ファイルディスクリプタを使うことでストリームを扱います。このファイルディスクリプタとはどんなものかをテーマに情報をまとめています。

▲記事トップへ

目次

このページの目次です。

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

2. ファイルディスクリプタとストリーム

3. ファイルディスクリプタの仕組み

4. ファイルディスクリプタの値

5. C言語でファイルディスクリプタを扱う例

6. まとめ

更新履歴

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

ファイルディスクリプタとは、WindowsやLinuxなどOS上のプログラムがアクセスするファイルや標準入出力などのOSが管理するストリームを識別するために用いる識別子です。

ファイルディスクリプタは、英語でfile descriptorで、ファイル記述子と訳されますが、和訳の意味も分かりにくいのでファイルディスクリプタとそもまま呼ぶことも多いです。

2. ファイルディスクリプタとストリーム

WindowsやLinuxなどOS上のプロセスは、ファイルディスクリプタを使うことでストリームを扱います。

ストリームとは、データを流れるものととらえる抽象的なデータ型で、ファイル入出力、メモリバッファの入出力、ネットワーク通信など、対象として扱うものはさまざまなものがあります。

3. ファイルディスクリプタの仕組み

WindowsやLinuxなどのOSのコア部分をカーネルといいますが、カーネルの中には実際にストリームを管理するデータ構造があります。 このストリームは、直接プロセスに見せるといろいろな理由でよくないということで、カーネルが持っているストリーム番号と対応付け、プロセスには番号でストリームを指定させる仕組みになっています。

ファイルディスクリプタの仕組み

4. ファイルディスクリプタの値

ファイルディスクリプタを指定してストリームを扱うには、どのストリームにどの番号が結び付けられているか知っている必要があります。

ファイルディスクリプタの値は、整数値になります。ファイルディスクリプタは、0から順番に整数の値が割り当てられます。 OSによってはファイルディスクリプタにバッファ管理機能なども含めた「ファイルハンドル」と呼ばれる管理体系も存在します。

ファイルディスクリプタには、識別子とともにファイル名、ファイルサイズ、プログラムが操作中のファイル内の位置、ファイル作成、更新日時などの情報が含まれており、OSは識別子によってどのファイルを操作するかを判断します。

通常、0:標準入力(stdin)、1:標準出力(stdout)、2:標準エラー出力(stderr)の3つはOS(シェル)が最初に用意するため、プログラムがファイルをオープンすると「3」から順番にディスクリプタが割り当てられます。

5. C言語でファイルディスクリプタを扱う例

例えば、open(2)は、そのファイルを示すファイルディスクリプタを返却します。

int fd;
fd = open("hoge.txt", O_RDONLY);

6. まとめ

ファイルディスクリプタとは、WindowsやLinuxなどOS上のプログラムがアクセスするファイルや標準入出力などのOSが管理するストリームを識別するために用いる識別子です。

ファイルディスクリプタを理解する上で重要と思われるポイントを3つまとめてみました。

  1. ストリームとは、データを流れるものととらえる抽象的なデータ型で、ファイル入出力、メモリバッファの入出力、ネットワーク通信など、対象として扱うものはさまざまです。
  2. ストリームは、直接プロセスに見せるといろいろな理由でよくないということで、カーネルが持っているストリーム番号と対応付け、プロセスには番号でストリームを指定させる仕組みになっています。
  3. ファイルディスクリプタを指定してストリームを扱うには、どのストリームにどの番号が結び付けられているか知っている必要があります。

更新履歴

このページの更新履歴です。

戻る

スポンサーリンク

サイト内のページ

言語
C・C++ /HTML /Java /JavaScript /PHP /シェルスクリプト

開発環境
Ant /Burp /Eclipse /Fiddler /gcc /gdb /Git /g++ /JDK /JMeter /JUnit /Teraterm /ZAP

技術・仕様
Ajax /CORBA /Jakarta EE(旧称J2EE、Java EE) /JNI

ライブラリ/Framework/CMS
bootstrap /jQuery /FuelPHP /Lucene /MyBatis /Seasar2 /Spring /Struts /WordPress

Web API
Google Maps

ITインフラOSとミドルウェア
Linux /Windows /シェル
ActiveMQ /Tomcat /MariaDB /MySQL /Nagios /Redis /Solr

ITインフラサーバー
公開Webサーバー

ITインフラネットワーク
プログラミング /構築

ITインフラセキュリティ
公開サーバーのセキュリティ

PC製品
ZOTAC

SI
ホームページの作り方

その他
IT用語 /ITスキル体系

スポンサーリンク

関連サイト内検索ツール

zealseedsおよび関連サイト内のページが検索できます。

IPアドレス確認ツール

あなたのグローバルIPアドレスは以下です。

44.197.251.102

HTMLの表示色確認ツール

パスワード生成ツール

文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。

ここに生成されます。

スポンサーリンク