標準入出力、メモリ管理ライブラリをC/C++プログラムで使用する場合は、低水準インタフェースルーチンを作成しなければなりません。表 8.2にCライブラリ関数で使用している低水準インタフェースルーチンの一覧を示します。
関数名open、close、read、write、lseek、sbrk、error_addr、wait_sem、signal_semは低水準インタフェースルーチンの予約済み識別子です。ユーザプログラム中では使用しないでください。 |
低水準インタフェースルーチンで必要な初期化は、プログラム起動時に行う必要があります。これは、ライブラリ初期設定処理_INITLIBの中の「_INIT_LOWLEVEL」という関数の中で行ってください。
以下、低水準入出力の基本的な考え方を説明したあと、各インタフェースルーチンの仕様を説明します。
標準入出力ライブラリでは、ファイルをFILE型のデータによって管理しますが、低水準インタフェースルーチンでは、実際のファイルと1対1に対応する正の整数を与え、これによって管理します。この整数をファイル番号といいます。
openルーチンでは、与えられたファイル名に対してファイル番号を与えます。openルーチンでは、この番号によってファイルの入出力ができるように、以下の情報を設定する必要があります。
ファイルのデバイスの種類(コンソール、プリンタ、ディスクファイル等)。 |
openルーチンで設定した情報に基づいて、以後、入出力(read、writeルーチン)、読み込み/書き出し位置の設定(lseekルーチン)を行います。
closeルーチンでは、出力ファイルのバッファリングを行っている場合はバッファの内容を実際のファイルに書き出し、openルーチンで設定したデータの領域が再使用できるようにしてください。
本項では低水準インタフェースルーチンを作成するための仕様を説明します。以下、各ルーチンごとに、ルーチンを呼び出す際のインタフェースとその動作および実現上の注意事項を示します。
各ルーチンのインタフェースは以下の形式で示します。なお、低水準インタフェースルーチンは必ず関数原型にしてください。またC++プログラム内で宣言する場合は「extern "C"」を付加してください。