1

我认为sys_open是规范的系统调用,

也就是说,那些以 . 为前缀的sys_

strace它应该记录所有系统调用,输出open为系统调用(非前缀版本),我很困惑......

哪个是系统调用?

4

2 回答 2

2

引用 Brian W. Kernighan 和 Rob Pike 的话,来自“The UNIX Programming Environment”,第 44 页:

程序通过系统调用(内核中的子程序)检索文件中的数据read

系统调用被称为read,为了让程序员更简单,C 标准库中的相应函数具有相同的名称。

sys_read另一方面,这个名字只对少数人感兴趣,即那些破解内核的人。它的名字只是被认为是操作系统的一个实现细节。

于 2011-04-04T19:32:25.530 回答
1

我假设你在这里谈论 C 或 C++。任何相关的语言标准都sys_open()没有open()强制要求它是“系统调用”。然而,在大多数(全部?)*NIXes(包括 Linux、Mac OS X、BSD 等)open()上都是系统调用。

据我所知,sys_open()它是 Linux 独有的,并作为open().

于 2011-04-04T03:31:33.677 回答