我目前正在一个项目,该项目挂钩的各种系统的电话和写东西的一个日志,取决于哪一个是称为。因此,举例来说,当时我改变的权限的文件,我写一点进入日志文件,用于跟踪旧的权限和新的许可。然而,我有一些麻烦定究竟在哪里我应该在看。对于上述例子,strace告诉我,"属性"命令使用的系统调sys_fchmodat().然而,还有一个sys_chmod()以及sys_fchmod().

我肯定内核开发人员知道他们在做什么,但我想知道:点是什么所有的这些(似乎)冗余系统的呼吁,以及是否有任何规定哪些是用来做什么?(即是的",在"系统调用的前缀为"f"的意思是要做一些具体的事情?)

有帮助吗?

解决方案

是的,有一些命名规则。

  • chmod需要的文件,同时fchmod需要文件的描述符。同于统计vs fstat.
  • fchmodat需要一个文件描述符/文件对(文件描述的目录和文件的文件名称内的目录)。同样对于其他*在电话;见注释部分 http://kerneltrap.org/man/linux/man2/openat.2 对于一个解释。

其他提示

历史: - )

一旦创建了系统调用,就无法对其进行更改,因此当需要新功能时,将创建新的系统调用。 (当然这意味着在创建新的系统调用之前有一个很高的标准。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top