【问题标题】:Redundant Linux Kernel System Calls冗余 Linux 内核系统调用
【发布时间】:2010-09-20 18:49:39
【问题描述】:

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

我确信内核开发人员知道他们在做什么,但我想知道:所有这些(看似)冗余系统调用的意义何在,是否有关于哪些用于什么用途的规则? (即“at”系统调用或以“f”为前缀的系统调用是否意味着执行特定操作?)

【问题讨论】:

    标签: linux kernel system-calls


    【解决方案1】:

    历史 :-)

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

    【讨论】:

      【解决方案2】:

      是的,有一些命名规则。

      • chmod 采用文件名,而 fchmod 采用文件描述符。 stat 与 fstat 相同。
      • fchmodat 采用文件描述符/文件名对(目录的文件描述符和目录中文件名的文件名)。与其他 *at 通话相同;有关说明,请参阅http://kerneltrap.org/man/linux/man2/openat.2 的注释部分。

      【讨论】:

        猜你喜欢
        • 2012-11-18
        • 1970-01-01
        • 2013-04-25
        • 2011-01-07
        • 2018-09-15
        • 1970-01-01
        • 2012-01-07
        • 2013-11-01
        • 1970-01-01
        相关资源
        最近更新 更多