stat64系统调用:参数多少?

时间:2014-01-02 19:33:42

标签: posix stat

在OSX 10.9(64位操作系统)上运行命令

sudo dtruss pwd

获取pwd命令执行的系统调用列表。 我看到系统调用stat64执行了几次,如下所示:

stat64("/usr/lib/system/libsystem_kernel.dylib\0", 0x7FFF5F7B4E28, 0x7FFF5F7B5CC0)       = 0 0

现在,在在线POSIX标准文档和Apple documentation中,我看到stat64有两个参数。 为什么我的情况需要3个参数?

1 个答案:

答案 0 :(得分:1)

C 库调用stat64只是wrapper周围的and this system call )。它们不必匹配参数的数量,尽管在linux的情况下,例如它们似乎大多数情况下(我找不到类似的BSD 参考),虽然一个值得注意的例外是fork,它实现为对克隆系统调用的调用。

更新

我找不到OSX的等价物,但如果我们看一下syscalls man page for Linux就说:

  

随着时间的推移,对某些系统调用的接口进行了更改          必要。这种变化的一个原因是需要增加          传递给系统调用的结构或标量值的大小。          由于这些变化,现在有各种相关的群体          执行的系统调用(例如,truncate(2)和truncate64(2))          类似的任务,但在细节上有所不同,例如他们的大小          参数。 (如前所述,应用程序通常不知道          这个:glibc包装函数做了一些工作来确保          调用正确的系统调用,并保留ABI兼容性          对于旧的二进制文件。)以多个存在的系统调用的示例          版本如下: