c - 在类 UNIX 操作系统上,二进制文件的最少内存使用量是多少?

标签 c unix posix system-calls

我实际上正在大学参加操作系统类(class)。 教授向我们介绍了 fread()、fwrite() ... C 函数和 read()、write() ... 系统调用。 当我必须定义 block 的大小和 block 的数量时,我产生了疑问。正如文档所述,该函数返回红色或写入的 block 的确切数量。 所以我的问题是:硬盘上是否有可能有一个小于一个字节的文件,或者是否有可能有一个维度不是Byte的倍数的文件?

提前谢谢您。

编辑:正如有人建议的那样,我没有发布实际示例。这就是我正在做的练习。这只是一个克隆文件的程序 https://gitlab.com/clementefnc/laboratori_so/blob/master/Lab01/Es4/Es4p4.c

最佳答案

Is it possible to have a file on the hard disk smaller than one byte, or is possible to have a file which dimension is not a multiple of Byte?

是的,理论上这是完全可能的。 "file"是一种抽象,没有什么可以阻止具有不同限制或完全不同的"file"抽象的操作系统的存在。事实上,硬件支持的最小单元通常是许多字节的 block (例如 512 字节扇区),并且操作系统已经提供了“小于硬件支持的最小大小”的抽象。

实际上,没有操作系统支持这一点;并且很难看到它的用例(因此将来任何操作系统都不太可能支持它)。

关于c - 在类 UNIX 操作系统上,二进制文件的最少内存使用量是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52860903/

相关文章:

c# - 如何在运行时编译 C 代码并使用它的函数

linux - 如何修改我的用户配置文件以将我创建的脚本文件夹附加到我的 PATH 变量的末尾?

unix - 如何在unix中每行末尾 append 一个字符

c++ - 奇怪的执行行为

c - MAP_ANONYMOUS 符合 C99 标准

C程序的命令行输入(使用Perl的 'print'命令)

c - 为什么 C 编译器优化 switch 和 if 不同

协调多个 posix 信号量

c - 警告 : format ‘%llx’ expects argument of type ‘long long unsigned int *’ , 但参数 3 的类型为 ‘off64_t *’ [-Wformat]

实际应用中等待所有 child 的正确方法