I-8-4. 低水準ファイル処理によるファイル操作

低水準ファイルアクセスを行うシステムコールを使ってファイルを操作する方法を示す。ファイル操作のモード、ファイルの生成、オープンとクローズ、ファイルの読み書きとファイルパーミッションの変更、その他ファイル操作に必要なシステムコール郡について説明する。

【学習の要点】

* ファイルのアクセスには、高水準ファイルアクセスと低水準ファイルアクセスがある。

* 低水準ファイルアクセスを行うシステムコールを呼び出すために、様々な関数が用意されている。

* 低水準入出力関数はOS依存の関数で、最低限の機能のみが用意されている。

図I-8-4. 低水準ファイルアクセス

【解説】

1) 低水準入出力関数の特徴

オペレーティングシステムに依存する関数で、かつ最低限の機能のみが用意されている。特徴を以下に示す。

* プログラムの変更が必要なため、簡単に他のOSへ移植させることができない。

* ファイルからの読込を行うと、プログラムが指定した領域に直接書き込まれる。

* 1バイトの読み込みであっても、最小単位である1024バイトをメモリ上に蓄える。ただし、次の1バイトの読み込みでは、メモリ上から読み込むため、高速な処理が可能。

2) 低水準ファイルアクセス入出力関数

以下に、低水準ファイルアクセス入出力関数を紹介する。関数の戻り値が-1であった場合は、エラーが発生したことを意味する。

* creat関数:ファイル作成を作成する。戻り値はファイルディスクリプタ。

- 引数は、作成したいファイル名へのポインタと作成時のモード。

- 作成時に指定するモードには、読み取り専用、読込書込みともに可能などが指定可。

* open関数:ファイルをオープンする。戻り値はファイルディスクリプタ。

- 引数は、作成したいファイル名へのポインタとオープン時のモード。

- オープン時に指定するモードには、読込専用、書込専用、読込書込み可などが指定可。

* read関数:ファイルからの読込み。戻り値は読み込んだサイズ。

- 引数は、ファイルディスクリプタ、読み込みたいバイト数、格納するバッファ。

- ファイルディスクリプタは、creat関数やopen関数からの戻り値。

* write関数:ファイルへの書き込み。戻り値は実際に書き込んだサイズ。

- 引数は、ファイルディスクリプタ、書き込みたい情報、書き込みたいサイズ。

* lseek関数:入出力を行いたい位置の指定。戻り値はファイル先頭からのバイト数。

- 引数は、ファイルディスクリプタ、移動したいバイス数、開始したい位置。

- 第三引数には、L_SET(先頭から)、L_XTND(終端から)などの指定が可能。

* close関数:ファイルクローズを閉じる。0が戻るとクローズ成功を意味する。

- 引数は、ファイルディスクリプタを指定する。

3) その他の低水準ファイル処理関数

その他の、低水準ファイル処理関数を紹介する。

* chmod関数、fchmod関数; ファイルのモードを変更する。

* chown関数、fchown関数、lchown関数: ユーザID、グループIDを変更する。

* umask関数: プロセスによりファイル作成時のマスク値を設定、変更する。

* access関数: ファイル操作のアクセス権を検査する。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。

フォーラム会員企業専用

記事配信

コンテンツ配信

ユーザログイン