我认为sys_open
是规范的系统调用,
也就是说,那些以 . 为前缀的sys_
。
但strace
它应该记录所有系统调用,输出open
为系统调用(非前缀版本),我很困惑......
哪个是系统调用?
我认为sys_open
是规范的系统调用,
也就是说,那些以 . 为前缀的sys_
。
但strace
它应该记录所有系统调用,输出open
为系统调用(非前缀版本),我很困惑......
哪个是系统调用?
引用 Brian W. Kernighan 和 Rob Pike 的话,来自“The UNIX Programming Environment”,第 44 页:
程序通过系统调用(内核中的子程序)检索文件中的数据
read
。
系统调用被称为read
,为了让程序员更简单,C 标准库中的相应函数具有相同的名称。
sys_read
另一方面,这个名字只对少数人感兴趣,即那些破解内核的人。它的名字只是被认为是操作系统的一个实现细节。
我假设你在这里谈论 C 或 C++。任何相关的语言标准都sys_open()
没有open()
强制要求它是“系统调用”。然而,在大多数(全部?)*NIXes(包括 Linux、Mac OS X、BSD 等)open()
上都是系统调用。
据我所知,sys_open()
它是 Linux 独有的,并作为open()
.