如果我以文本模式而不是二进制模式打开文件有什么区别吗?因为我读到UNIX和Linux不区分文本和二进制文件。
在 Linux 上没有区别(至少在 Ext4 等本机文件系统上,以及大多数其他文件系统上,以及通常的 GNU libc)。
Perhaps some bizarre filesystems could have a specific flag to open differently binary or text files. I know no such filesystem. Maybe you could code some FUSE filesystem making the distinction, perhaps with some additional hack around fopen
inside a bizarrely customized libc
然而,C99标准(至少n1256草案的第271页,§7.19.5.3)明确提到了文本模式与二进制模式,因此如果您的程序符合标准,它将更容易移植到其他系统(例如Windows)。
所以我的观点是,您可能想尝试将模式字符串传递给fopen
区分二进制模式和文本模式。 (我同意我不经常这样做)。它不会伤害。
Linuxfopen(3)手册页明确指出:
模式字符串还可以包含字母“b”作为最后一个
字符或作为任意两个字符之间的字符-
上述字符串。这严格是为了
与C89兼容,没有影响; 'b' 全部被忽略
符合 POSIX 的系统,包括 Linux。 (其他系统可能会处理
文本文件和二进制文件不同,添加“b”可能是
如果您对二进制文件进行 I/O 并期望您的程序是个好主意
可以移植到非 UNIX 环境。)
当然,open(2)系统调用没有任何方式传输模式标志。 (你需要一些private ioctl(2)大概)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)