可能重复:
C 在二进制文件的中间写入而不覆盖任何现有内容
我正在编写一个偶尔需要在二进制文件开头插入 1-64k 数据的程序。POSIX API / Linux ABI 没有insert(fd,buf,len)
函数调用。最有效的方法是什么?
可能重复:
C 在二进制文件的中间写入而不覆盖任何现有内容
我正在编写一个偶尔需要在二进制文件开头插入 1-64k 数据的程序。POSIX API / Linux ABI 没有insert(fd,buf,len)
函数调用。最有效的方法是什么?
您的选择是:
(2) 的优点是它不会破坏符号链接或指向原始文件的多个链接。缺点(正如Keith Thompson所指出的)是,如果它被中断,您就会丢失原始文件。
(1) 的缺点是,如果您需要保留链接数量并通过符号链接工作,则必须将新文件复制回旧文件,因此需要进行更多复制。优点是复制比较简单,原文件直到最后都不会被破坏。
选项 (2) 的代码还有另一个问题 —写入二进制文件的中间而不覆盖任何现有内容。在(二进制)文件的开头插入只是在文件中间插入的特定(甚至不是特殊)情况。