查看手册页以了解stat()
也涵盖lstat()
和fstat()
。如果您得到 -1 作为返回值,则您尝试获取摘要信息的文件不存在,或者可能没有读取它的权限(请参见下面的最后一个示例,该示例显示了与您的fopen()
测试的差异,因为文件可能存在但不存在让你打开它)。
edd@max:/tmp$ cat stat.c
#include <stdio.h>
int main(int argc, char *argv[]) {
if (argc > 1)
printf("Returned %d for %s\n", stat(argv[1]), argv[1]);
}
edd@max:/tmp$ gcc -o stat stat.c
edd@max:/tmp$ ./stat stat.c
Returned 0 for stat.c
edd@max:/tmp$ ./stat does-not-exist
Returned -1 for does-not-exist
edd@max:/tmp$ ./stat /root/.ssh/id_dsa ## exists, but I can't read it
Returned -1 for /root/.ssh/id_dsa
edd@max:/tmp$