Sre*_*ree 3 c struct message stat reply
我需要使用stat()找到命令行中给出的文件或目录的大小.它适用于文件(相对路径和绝对路径),但是当我给出一个目录时,它总是返回512或1024的大小.
如果我打印目录中的文件,它如下所示:
Name : .
Name : ..
Name : new
Name : new.c
Run Code Online (Sandbox Code Playgroud)
但实际上只有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()");
}
}
Run Code Online (Sandbox Code Playgroud)
我哪里做错了???
这是我的要求,回复结构:
struct message{
unsigned short msgType;
unsigned int offset;
unsigned int serverDelay;
unsigned int dataLen;
char data[100];
};
struct message request,reply;
Run Code Online (Sandbox Code Playgroud)
我在unix os中的gcc编译器中运行它.
stat()在目录上不返回其中的文件大小的总和.size字段表示目录条目占用的空间,它取决于几个因素.如果您想知道特定目录下的所有文件占用了多少空间,则必须递归树,累加所有文件占用的空间.这就是工具的du工作方式.
| 归档时间: |
|
| 查看次数: |
5171 次 |
| 最近记录: |