据我所知,例如,调用库函数printf
会调用write(2)
系统调用。
我的问题是:是否有一个库调用可以调用多个系统调用?换句话说:进行系统调用总是将 1:1 映射到库调用?
答案1
从系统调用到库调用不存在 1:1 的映射,反之亦然。
例如,大多数(如果不是全部)算术函数(例如 sin
) 不调用任何系统调用;其他如posix_spawn
使用多个系统调用。
另一方面,一些系统调用,例如init_module
没有任何相应的库调用,需要通过“手动”调用syscall
。
答案2
反例getpwent
(3)调用许多系统调用