Linux 中的库调用和系统调用有什么区别?

Linux 中的库调用和系统调用有什么区别?

我想知道Linux中的库调用和系统调用有什么区别。任何有助于更好地理解两者背后的概念的指示将不胜感激。

答案1

并不存在真正的“库调用”这样的东西。您可以调用链接到共享库的函数。这仅仅意味着在运行时查找库路径以确定要调用的函数的位置。

系统调用是由内核处理的低级内核调用。

答案2

如果您输入man manshell,您将看到手册部分的列表

2 系统调用(内核提供的函数)

3 库调用(程序库内的函数)

例如,chmod当您键入 时,您会在手册的第 2 部分中找到man chmod。并fprintf在第 3 节中。

答案3

系统调用由内核直接处理。

库调用由动态(或静态链接)库处理。进行库调用的程序必须首先导入该库,然后调用才能起作用。库调用本身可以使用系统调用。

有时,库作为系统调用的“前端”提供,以提供内核未提供的额外功能或易用性。

答案4

只是添加其他答案中提到的差异。

由于库调用只是函数调用,因此不会发生从用户空间到内核空间的切换。另一方面,系统调用会导致从用户空间切换到内核空间,因为系统调用在内核模式下运行。

相关内容