【发布时间】:2017-07-11 16:09:27
【问题描述】:
在 Linux 中有什么方法可以使用 c 生成存储在内存中的两个文件的差异/补丁,使用通用格式(即:统一差异,如命令行 diff 实用程序)?
我正在开发一个系统,我在内存中生成两个文本文件,但没有可用的或不需要的外部存储。我需要创建两个文件的逐行差异,因为它们是mmap'ed,它们没有文件名,阻止我简单地调用system("diff file1.txt file2.txt")。
我有可用的文件描述符 (fds),这是我访问数据的唯一入口点。有没有办法通过比较两个打开的文件来生成差异/补丁?如果实现是 MIT/BSD 许可的(即:非 GPL),那就更好了。
谢谢。
【问题讨论】:
-
我找不到使用 2 个标准输入参数作为文件调用
diff的方法,但这是一种方法。 -
另一种方法是使用
comm - -和馈线交替,但它仅在文件同步时才有效。 -
我知道您说过“没有可用的或不需要的外部存储”。但是您是否考虑过使用像 ramfs 这样的简单内存文件系统?它基本上出现在所有 linux 发行版和 AFAIK 上,它的主要用途是在早期启动期间抛出一个临时文件系统。
-
@MitchellGouzenko 我的部分要求是没有其他人能够访问这些文件,除了
root用户通过 GDB 附加到进程以强制访问数据。跨度>