Есть ли способ в Linux, используя c, для создания diff/patch из двух файлов, хранящихся в памяти, с использованием общего формата (то есть: унифицированный diff , например, с помощью командной строки diff
)?Diff/сравнить два файла по файловому дескриптору (fd) вместо имени файла
Я работаю над системой, в которой я создаю два текстовых файла в памяти, и никакое внешнее хранилище не доступно или не требуется. Мне нужно создать линейный diff двух файлов, а так как они mmap
'ed, у них нет имен файлов, что мешает мне просто позвонить system("diff file1.txt file2.txt")
.
У меня есть файловые дескрипторы (fd
), доступные для использования, и это моя единственная точка входа в данные. Есть ли способ создать diff/patch, сравнив два открытых файла? Если реализация является лицензией MIT/BSD (т. Е. Не-GPL), тем лучше.
Спасибо.
Я не могу найти способ вызвать 'diff' с 2 стандартными входными аргументами в качестве файлов, но это будет способ сделать это. –
другим способом было бы использовать «comm - -» и линии подачи альтернативно, но он работает только в том случае, если файлы синхронизированы. –
Я знаю, что вы сказали: «Внешнее хранилище не доступно или не требуется».Но считаете ли вы использование простой файловой системы в памяти, такой как ramfs? В основном это все дистрибутивы linux и AFAIK, их основное использование - выпустить временную файловую систему во время ранней загрузки. –