【发布时间】:2018-10-17 17:54:18
【问题描述】:
我实际上正在大学学习操作系统课程。 教授向我们介绍了 fread()、fwrite() ... C 函数和 read()、write() ... 系统调用。 当我必须定义块的大小和块数时,我的疑问就变成了。正如文档所述,此函数返回红色或写入的确切块数。 所以我的问题是:硬盘上是否有可能有一个小于一个字节的文件,或者是否有可能有一个尺寸不是字节的倍数的文件?
提前谢谢你。
编辑:正如有人建议的那样,我没有发布实际示例。这是我正在做的练习。它只是一个克隆文件的程序 https://gitlab.com/clementefnc/laboratori_so/blob/master/Lab01/Es4/Es4p4.c
【问题讨论】:
-
没有和没有.......
-
两者都不可能。
-
通常,文件以磁盘块为单位分配,通常是 2 的幂,通常至少为 512(对于旧软盘,有时小至 128)字节;在现代硬盘上,它通常是 4096 的块大小或 2 的更大幂。您不能在文件中存储少于一个字节;在磁盘上,即使是一个字节的文件也会比一个字节占用更多的空间。详细信息取决于磁盘驱动器的文件系统类型。
-
0 字节文件很常见。不可能有一个大于 0 字节且小于 1 字节的文件
-
我投票结束这个问题,因为它不是关于软件开发过程中遇到的具体的实际问题。 (一个实际的问题——f/e,如何在有限的存储空间中有效地批量存储单个二进制标志——可能会更好地被接受;但是很难看到一个只看文件大小的问题的答案的实际用途并忽略元数据——索引节点、目录条目等)。
标签: c unix posix system-calls