Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all
名前
intro - システムコールの説明
説明
マニュアルの 2 章では Linux のシステムコールについて説明している。 システムコールは Linux カーネルへのエントリーポイントである。 通常は、システムコールは直接起動される訳ではなく、 ほとんどのシステムコールには対応する C ライブラリのラッパー関数があり、 そのラッパー関数が システムコールを呼び出すのに必要な処理を実行する。 そのため、システムコールを呼び出すのは 通常のライブラリ関数を呼び出すのと 同じように見える。 多くの場合、 C ライブラリのラッパー関数が行うのは以下のことだけである。 * 引き数と一意なシステムコール番号をカーネルが期待するレジスターにコピーする * カーネルがシステムコールの実際の処理を行う時点でカーネルモードに入る * カーネルが CPU をユーザーモードに返した際にシステムコールがエラー番号を返したいれば errno を設定する しかし、ラッパー関数がこれ以上のことを行う場合もいくつかある。例えば、カーネルモードに入る 前に引き数に対する前処理を実行したり、システムコールが返した値に対する後処理を行うなどであ る。このような場合、セクション 2 のマニュアルページでは、基本的に、C ライブラリ API イン ターフェース (通常は GNU C ライブラリのもの) と生のシステムコールの両方の詳細をできるだけ 説明しようとする。ほとんどの場合、メインとなる「説明」では C ライブラリのインターフェース に焦点をあてて説明し、システムコールでの差分については「注意」のセクションに説明がある。 Linux のシステムコールのリストについては syscalls(2) を参照のこと。
返り値
エラーの場合、ほとんどのシステムコールは負のエラー番号を返す (具体的には errno(3) で説明さ れている定数のいずれかを負にした値を返す)。 C ライブラリのラッパーは呼び出し元からこうした 詳細を隠蔽している。 システムコールが負の値を返した場合、ラッパーは絶対値を errno 変数にコ ピーし、ラッパーの返り値として -1 を返す。 成功時にシステムコールが返す値はシステムコールにより異なる。 多くのシステムコールは成功時 に 0 を返すが、 成功時に 0 以外の値を返すシステムコールもある。 詳細は個々のマニュアルペー ジで説明されている。 マニュアルページの「書式」の節に規定されたヘッダーファイルから関数の定義を 得るために、プ ログラマが機能検査マクロを定義しなければならない場合がある (機能検査マクロの定義が必要な場 合、これらの機能検査マクロの定義は 「どの」ヘッダーファイルのインクルードよりも前で行われ なければならない)。 このような場合には、必要なマクロがマニュアルページで説明されている。 機能検査マクロのさらなる情報については、 feature_test_macros(7) を参照のこと。
準拠
この章の関数が準拠する UNIX システムや標準を示すのにいくつかの単語や略号が 使用されてい る。 standards(7) を参照のこと。
注意
直接呼び出す ほとんどの場合、直接システムコールを呼び出す必要はないが、 場合によっては標準 C ライブラリ に適切な関数が実装されていないこともある。 このような場合は、プログラマは syscall(2) を 使って、自分でシステムコールを呼び出さなければならない。 過去には、 _syscall(2) マクロの 一つを使ってシステムコールの呼び出すこともできた。 著者と著作権 著者と著作権に関しては各マニュアルページのソースのヘッダーを参照すること。 これらはページ ごとに異なる可能性があることに注意してほしい。
関連項目
_syscall(2), syscall(2), syscalls(2), errno(3), intro(3), capabilities(7), credentials(7), feature_test_macros(7), mq_overview(7), path_resolution(7), pipe(7), pty(7), sem_overview(7), shm_overview(7), signal(7), socket(7), standards(7), svipc(7), symlink(7), time(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。