系统调用的包装函数是否也称为系统调用?

时间:2018-05-09 15:11:21

标签: c linux system-calls

open()函数的documentation说明如下:

  

open()系统调用打开路径名指定的文件。

我认为open()是系统调用的包装函数,本身并不是系统调用。

或者是系统调用的包装函数,也称为系统调用?

2 个答案:

答案 0 :(得分:3)

简短回答 - 是的。
答案很长 - 这取决于。系统调用是一种编程方式,其中计算机程序从其执行的操作系统的内核请求服务。这可能包括与硬件相关的服务(例如,访问硬盘驱动器),新进程的创建和执行,以及与集成内核服务(例如进程调度)的通信。系统调用提供进程和操作系统之间的基本接口。

系统调用未定义为特定功能。相反,它们是服务请求,或者换句话说是OS API。它们几乎总是通过语言标准提供的标准功能对用户隐藏。 标准是在不同操作系统的编译器中实现的。

答案 1 :(得分:0)

我认为Petar的另一个答案是正确的,但我也想补充一点,对我来说,解释为什么open被认为是系统调用的最简单方法是因为系统调用不能保证在所有系统调用中都是相同的OS的。例如,如果我们想象一个OScall 1打开的操作系统,另一个操作系统可能会使用syscall 1进行写操作(如linux x64那样),所以为了兼容性功能,添加了open(),操作系统将提供实现open()作为对相应系统调用值的调用,程序员不必担心在不同操作系统之间调用正确的系统调用号