我目前正在开发一个项目,该项目挂钩到各种系统调用并将内容写入日志,具体取决于调用的是哪一个。因此,例如,当我更改文件的权限时,我会在跟踪旧权限和新权限的日志文件中写一个小条目。但是,我在确定我应该注意的位置时遇到了一些麻烦。对于上面的例子,strace告诉我“chmod”命令使用系统调用sys_fchmodat()。但是,还有一个sys_chmod()和一个sys_fchmod()。
我确信内核开发人员知道他们在做什么,但我想知道:所有这些(看似)冗余系统调用的重点是什么,是否有关于哪些用于什么的规则? (即“at”系统调用或以“f”为前缀的那些意味着做某些特定的事情?)
答案 0 :(得分:11)
历史: - )
一旦创建了系统调用,就无法对其进行更改,因此当需要新功能时,将创建新的系统调用。 (当然这意味着在创建新的系统调用之前有一个很高的标准。)
答案 1 :(得分:6)
是的,有一些命名规则。