1つのライブラリ呼び出しが複数のシステム呼び出しを呼び出すことはできますか?

1つのライブラリ呼び出しが複数のシステム呼び出しを呼び出すことはできますか?

私が知っている限り、例えばライブラリ関数を呼び出すと、システムコールがprintf呼び出されます。write(2)

私の質問は:複数のシステムコールを呼び出すことができるライブラリ呼び出しはありますか?つまり、システムコールを行います。いつも図書館の通貨に1:1マッピングしますか?

答え1

システムコールからライブラリコールへ、またはその逆に1:1のマッピングはありません。

たとえば、ほとんどの(すべてではありませんが)算術関数(例えば sin) は、次のシステムコールを呼び出しません。posix_spawn複数のシステムコールを使用します。

一方、一部のシステムコールは次のとおりです。init_moduleそのライブラリ呼び出しはなく、「手動で」呼び出す必要があります。syscall

答え2

反例getpwent(サム)多くのシステムコールを呼び出す

関連情報