关于C的stat()函数的令人困惑的文档

时间:2016-01-14 02:56:17

标签: c struct stat

我正在尝试使用which sinopia检查文件。该文档指出,该函数将返回一个名为stat()的{​​{1}},其中包含所有相关信息。但是,就在下面,它只是说

  

成功时,返回零。出错时,返回-1,并正确设置errno。

零和结构一起返回的是什么?他们都是以阵列形式返回的吗?我对C很新,我甚至不确定struct是否可以是一个数组项。

3 个答案:

答案 0 :(得分:4)

你必须将指针传递给该类型的结构,它将被填充。

是的,措辞有点令人困惑,但这意味着函数返回 0或-1,并且'返回'您在参数中需要的数据。点击此处:http://codewiki.wikidot.com/c:system-calls:stat

答案 1 :(得分:1)

返回值是成功还是错误,您将struct stat的地址作为参数之一传递

检查错误,如果没有(返回值为0),则假设传递的stuct stat现在有有效信息:http://linux.die.net/man/2/stat

答案 2 :(得分:1)

看一个非常简单的例子:

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
int main()
{
        char *fd= "test.txt";
        int y;
        struct stat buf;
        y = stat(fd,&buf);
        if(y == 0) {
        int size = buf.st_size;
        printf("%d",size); }

}
  

成功时,返回零。出错时,返回-1,错误是   适当地设定。

此处stat返回y的值。y的可能值为0,-1或任何errno。我希望你能得到这个。