如何写入fd替换相同长度的原始数据?

How to write to a fd replacing the original data of the same length?

我有一个文件描述符,现在我想将 n 个字节写入该文件以替换 n 个字节的原始数据(因此总文件大小不会改变),就像文字处理器的替换模式一样。有什么方便的方法可以做到这一点?

只需 write 到 fd。您可能需要 read 到正确的位置之前或 lseeklseek64 直接到正确的位置。

你必须确定fd是可写的。您需要为此检查 openopen 必须使用 O_WRONLYO_RDWR 调用,但没有使用 O_TRUNC 调用,这会将文件截断为零长度。

注意:write 文件仅在您覆盖文件末尾时才更改(增加)文件大小。如果您直接写入文件,它的大小不会改变。