fstat获取文件大小为零

时间:2017-10-10 05:09:07

标签: c linux file

文件就在那里,里面有json数据。我想知道文件的长度。但是当我尝试下面的代码,但大小仍然是0.

int file_contentl_Len = 0;
int fd_0 ;

fd_0 = open(FILE_PATH_CONFIG_0, O_WRONLY | O_TRUNC | O_CREAT, 0644);

if(fd_0 < 0)
{
    printf("\r\nError opening Config file %s: %s\n",FILE_PATH_CONFIG_0, strerror(errno));
    return -1;
}

struct stat buf;
fstat(fd_0, &buf);
file_contentl_Len = buf.st_size;


printf("\r\nConfig file %s content length: %d\r\n", FILE_PATH_CONFIG_0, file_contentl_Len);

1 个答案:

答案 0 :(得分:4)

您打开文件进行截断,必要时创建 - O_WRONLY | O_TRUNC | O_CREAT

大小为零会告诉您截断是否有效,或者文件是否为空。

如果您想阅读文件中的内容,请改用O_RDONLY。或者使用O_RDWR并仔细考虑是否允许创建文件。