2008-07-17
ファイル入出力とは
ファイル入出力について基本的なことを書いておきます。
- ファイル入出力とは
- ファイル入出力のプログラミングの流れ
- ファイルオープン
- ファイルの読み込み
- ファイルクローズ
- ファイルとプログラムの関係
- ファイル入出力とシステムコール
ファイル入出力とは
ファイル入出力とは、ファイルの読み書きのことです。ファイルから内容を読み出してプログラムで利用したり、プログラムで処理した内容をファイルに書き出したりできます。
ファイル入出力のプログラミングの流れ
ファイル入出力は、
- ファイルをオープンする。
- ファイルを読み込む。
- ファイルをクローズする。
という流れになります。
ファイルオープン
まずOSに対してファイルを利用したいということを伝えます( open 関数 )。ファイルが利用できるなら、OSはファイル記述子( ファイルディスクリプタ )を、プログラムに返します。Perlでは、この記述子を直接利用することはしないで、ファイルハンドルという形で間接的に利用します。ファイル入出力は、このファイルハンドルを通じて行うことになります。
ファイルディスクリプタをOSがプログラムに渡して利用している状態をファイルがオープンされた状態と呼びます。オープンされたファイルは、プロセス管理の一環としてOSに管理されます。
ファイルを読み込む
OSに対してファイルを読み込みたいということを伝えます。たいていの場合は、1行読み込みをおこなうreadline 関数を使います。繰り返しreadline関数を呼び出すことで、行を順番に読み込んでいくことができます。
ファイルクローズ
ファイルの利用が終わったらファイルをもう利用しませんということをOSに伝える必要があります( close 関数 )。ファイルクローズをしなくても、プログラムが終了すれば、OSによって自動的にファイルはクローズされますが、一応 close を書いておきましょう。利用する直前にopenして、利用終了直後に close するのが作法のようです。
ファイルとプログラムの関係
ファイルはプログラムから見ると外部の環境になります。プログラムから見て内部の環境といえるのはメモリです。内部環境であるメモリは、プログラムが自由に利用することができます。OSがプログラムに対してメモリを確保しその独占を許可します。
一方、ファイルというのは、ほかのプログラムから利用される可能性があります。また知らない間に消去されているかもしれません。ファイルはプログラムが独占することができません。
ファイル入出力とシステムコール
ファイル入出力をおこなうためには、OSに対して、「ファイルを利用したい」「読み込みたい」「利用が終わりました」ということを伝えるわけですが、このOSに対するお願いをシステムコールと呼びます。ファイル入出力には必ずシステムコールを呼び出さなければなりません。


