gpt4 book ai didi

c - stat()在c中给出错误的目录大小

转载 作者:太空狗 更新时间:2023-10-29 15:59:12 24 4
gpt4 key购买 nike

我需要使用 stat() 查找命令行中给出的文件或目录的大小。它适用于文件(相对路径和绝对路径),但当我提供目录时,它总是返回 512 或 1024 的大小。

如果我打印目录中的文件,它如下所示:

 Name : .
Name : ..
Name : new
Name : new.c

但实际上只有 new 和 new.c 文件在那里。为此,即使我在目录中放置更多文件,大小也将返回为 512。这是我的代码片段:

if (stat(request.data,&st)>=0){
request.msgType = (short)0xfe21;
printf("\n Size : %ld\n",st.st_size);
sprintf(reply.data,"%ld",st.st_size);
reply.dataLen = strlen(reply.data);
}
else{
perror("\n Stat()");
}
}

我哪里错了???

这是我的请求,回复结构:

 struct message{
unsigned short msgType;
unsigned int offset;
unsigned int serverDelay;
unsigned int dataLen;
char data[100];
};
struct message request,reply;

我在 unix 操作系统的 gcc 编译器中运行它。

最佳答案

目录上的

stat() 不会返回其中文件大小的总和。大小字段表示目录条目占用了多少空间,它会根据几个因素而变化。如果你想知道特定目录下的所有文件占用了多少空间,那么你必须向下递归树,将所有文件占用的空间相加。这就是像 du 这样的工具的工作方式。

关于c - stat()在c中给出错误的目录大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12240291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com