如何调用lstat(2)而不是lstat(3)?

时间:2010-08-08 03:31:16

标签: c linux

如何调用linux / c中的lstat系统调用,而不是它周围的lstat包装器(lstat(3))?系统调用没有SYS_lstat(SYS_lstat ...

2 个答案:

答案 0 :(得分:4)

如果您直接使用系统调用,则需要确保struct stat的定义和内核的定义一致。此外,如果您使用的是32位计算机,则可能永远不会使用已弃用的lstat系统调用,而是使用lstat64系统调用,因为前者在大文件上会失败。这些以及许多其他问题是为什么自己制作系统调用而不是使用标准库是一个糟糕的想法;后者包含所有遗留的兼容性,并为您提供符合标准的POSIX接口。

答案 1 :(得分:2)

也许你的标题不完整,我的Ubuntu 10.4系统上的/usr/include/bits/syscall.h中列出了SYS_lstat。

#define SYS_lstat __NR_lstat

然后在asm / unistd_64.h中:

#define __NR_lstat                              6

或者asm / unistd_32.h:

#define __NR_lstat              107

希望有所帮助。