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ライブラリの一部であると言います。