NetBSDシステムコールマニュアルで標準Cライブラリを参照するのはなぜですか?

NetBSDシステムコールマニュアルで標準Cライブラリを参照するのはなぜですか?

NetBSD 9 の man(2) ページを見ていますが、すべてのドキュメント (write(2), open(2), Pipe(2)) の一番上に標準 C ライブラリが言及されていることがわかります。

私が理解しているのは、システムコールがライブラリ関数(例えばlibcの関数)とは無関係であるということです。 Linuxシステムコールマニュアルには同様の言及はありません。これは、これらのメソッドを呼び出すことがカーネル関数を直接呼び出すのではなく、libcに含まれるいくつかのラッパー関数を呼び出すことを意味しますか?これは普遍的な事実ですか、それともNetBSDの特徴ですか?

答え1

open()たとえば、C標準ライブラリ関数です。

これ実装するオペレーティングシステムによって異なります。 Unixファミリーシステムでは通常、システムコールとして実装されます。

したがって、アプリケーションはを呼び出しopen()ますが、syscall()Unixに似たシステムは呼び出します。

Cは多くのプラットフォームに移植されていますが、すべてのプラットフォームにシステムコール機能があるわけではありません。実装が異なります。

open()したがって、ライブラリは基本オペレーティングシステムの実装から抽象化されているため、このようなものは標準Cライブラリの一部であると言います。

関連情報