UNIXシステムインタフェース【再学Cの8】

1577 ワード

Unixシステムでは、オペレーティングシステムはシステムインタフェースを介して(システム呼び出しともいう)サービスを提供するため、システム呼び出し時のカーネル内のコードは、カーネル内に存在する.ユーザーのアプリケーションはユーザー空間にあるので、ユーザープロセスがシステム呼び出しを呼び出すプロセスは、プロセスがユーザー空間からカーネルに入るプロセスである.C言語のライブラリ関数は、システム呼び出しによってその機能を実現するものであり、システム呼び出しはライブラリ関数に最下位の機能を提供したと言えるに対する拘束が不十分です.この章では、Unixシステムで入出力に使用されるシステム呼び出しについて説明し、標準ライブラリを実装する方法について説明します.
ファイルディスクリプタは、Unixシステム内のすべてのデバイスがファイルシステム内のファイルとみなされるため、UnixシステムにおけるI/O動作は、ファイルの読み取りまたは書き込みによって実現される.このような利点は、すべての周辺機器へのアクセスを同じインタフェースで実現できることです.本では、ファイルを開く過程を詳しく紹介し、周辺機器を読み書きする過程を紹介しています.ファイルが正常に開くと、オペレーティングシステムはプログラムに小さな非負の整数を返します.この整数がファイル記述子です.ここでは、ライブラリ関数のファイルポインタとの違いに注意します.ファイルポインタは、ライブラリ関数にファイルを記述し、ファイル記述子のパッケージであり、ファイル記述子よりも豊富な内容を含んでいます.
低レベルI/O-readおよびwrite外部デバイスの入出力はreadおよびwriteによって実現される.この2つのシステム呼び出しの一般的なフォーマットは次のとおりです.
int n_read = read(int fd, char *buf, int n);
int n_written = write(int fd, char *buf, int n);

ファイルの読み込み時の戻り値は、要求されたバイト数より小さい場合があります.0を返すと、ファイルの末尾(EOF)が読み込まれたことを示します.戻り値が-1の場合は、エラーが発生したことを示します.ファイルの書き込み時の戻り値は、実際に書き込まれたバイト数であり、戻り値が要求されたバイト数と等しくない場合は、エラーが発生したことを示します.
Open、create、close、unlink open、createは、ファイルを開き、作成するために使用されます.closeは、開いているファイルを閉じるために使用され、表示されていない閉じたファイルがある場合は、プログラムの実行が終了すると、オペレーティングシステムはファイルを閉じます.
lseekランダムアクセス