5

我目前正在开发一个项目,该项目挂钩各种系统调用并将内容写入日志,具体取决于调用的是哪个。因此,例如,当我更改文件的权限时,我会在日志文件中写入一个小条目来跟踪旧权限和新权限。但是,我在确定应该观看的确切位置时遇到了一些麻烦。对于上面的示例,strace 告诉我“chmod”命令使用系统调用 sys_fchmodat()。但是,还有一个 sys_chmod() 和一个 sys_fchmod()。

我确信内核开发人员知道他们在做什么,但我想知道:所有这些(看似)冗余系统调用的意义何在,是否有任何规则说明哪些系统调用用于什么?(即“at”系统调用还是以“f”为前缀的系统调用是为了做一些特定的事情?)

4

2 回答 2

11

历史 :-)

一旦创建了系统调用,就不能再更改它,因此当需要新功能时,就会创建新的系统调用。(当然这意味着在创建新系统调用之前有一个非常高的标准)。

于 2008-11-04T22:12:33.170 回答
6

是的,有一些命名规则。

于 2008-11-04T23:59:02.457 回答