如何写入fd替换相同长度的原始数据?
How to write to a fd replacing the original data of the same length?
我有一个文件描述符,现在我想将 n 个字节写入该文件以替换 n 个字节的原始数据(因此总文件大小不会改变),就像文字处理器的替换模式一样。有什么方便的方法可以做到这一点?
只需 write
到 fd。您可能需要 read
到正确的位置之前或 lseek
或 lseek64
直接到正确的位置。
你必须确定fd是可写的。您需要为此检查 open
。 open
必须使用 O_WRONLY
或 O_RDWR
调用,但没有使用 O_TRUNC
调用,这会将文件截断为零长度。
注意:write
文件仅在您覆盖文件末尾时才更改(增加)文件大小。如果您直接写入文件,它的大小不会改变。
我有一个文件描述符,现在我想将 n 个字节写入该文件以替换 n 个字节的原始数据(因此总文件大小不会改变),就像文字处理器的替换模式一样。有什么方便的方法可以做到这一点?
只需 write
到 fd。您可能需要 read
到正确的位置之前或 lseek
或 lseek64
直接到正确的位置。
你必须确定fd是可写的。您需要为此检查 open
。 open
必须使用 O_WRONLY
或 O_RDWR
调用,但没有使用 O_TRUNC
调用,这会将文件截断为零长度。
注意:write
文件仅在您覆盖文件末尾时才更改(增加)文件大小。如果您直接写入文件,它的大小不会改变。