我实际上正在上大学的操作系统课程。 教授告诉我们有关fread(),fwrite()... C函数以及read(),write()...系统调用的信息。 当我必须定义块的大小和块的数量时,我的疑惑就浮现了。如文档所述,此函数返回红色或已写入的确切块数。 所以我的问题是:硬盘上的文件可能小于一个字节,还是文件的大小不是Byte的倍数?
谢谢。
编辑:正如有人建议的那样,我还没有发布实际示例。这是我正在进行的练习。这只是一个克隆文件的程序 https://gitlab.com/clementefnc/laboratori_so/blob/master/Lab01/Es4/Es4p4.c
答案 0 :(得分:3)
硬盘上的文件可能小于一个字节,还是文件的大小不是Byte的倍数?
是的,理论上这是完全可能的。 “文件”是一种抽象,没有任何东西可以阻止存在具有不同限制或完全不同的“文件”抽象的OS。实际上,硬件支持的最小单位通常是一个许多字节的块(例如512字节扇区),并且操作系统已经提供了“小于硬件支持的最小大小”的抽象。
在实践中,没有操作系统曾经支持过此方法。而且很难看到用例(因此将来任何操作系统都不太可能会支持它)。