gpt4 book ai didi

c - 通过文件描述符 (fd) 而不是文件名来区分/比较两个文件

转载 作者:IT王子 更新时间:2023-10-29 01:07:34 26 4
gpt4 key购买 nike

在 Linux 中有什么办法,使用 , 使用通用格式生成存储在内存中的两个文件的差异/补丁(即:统一差异,就像命令行 diff 实用程序一样)?

我在一个系统上工作,在该系统中我在内存中生成了两个文本文件,并且没有可用或不需要的外部存储。我需要创建这两个文件的逐行差异,因为它们是 mmap 的,所以它们没有文件名,阻止我简单地调用 system("diff file1.txt file2.txt").

我有可供使用的文件描述符 (fd),这是我访问数据的唯一入口点。有没有办法通过比较两个打开的文件来生成差异/补丁?如果实现是 MIT/BSD 许可的(即:非 GPL),那就更好了。

谢谢。

最佳答案

在 Linux 上,您可以使用/dev/fd/伪文件系统(到/proc/self/fd 的符号链接(symbolic link))。使用 snprintf() 为两个文件描述符构造路径,例如 snprintf(path1, PATH_MAX, "/dev/fd/%d", fd1); fd2 的同上并运行 diff 在他们身上。

关于c - 通过文件描述符 (fd) 而不是文件名来区分/比较两个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42377443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com