Gibt es in Linux mit c eine Möglichkeit, ein diff/Patch aus zwei Dateien zu erzeugen, die im Speicher abgelegt sind, unter Verwendung eines gemeinsamen Formats (zB: Unified Diff , wie mit der Befehlszeile diff
Dienstprogramm)?Vergleichen/Vergleichen zweier Dateien nach Dateideskriptor (fd) anstelle des Dateinamens
Ich arbeite an einem System, wo ich zwei Textdateien im Speicher generieren, und kein externer Speicher verfügbar ist, oder gewünscht. Ich muss eine Zeile-für-Zeile Unterschied der zwei Dateien erstellen, und da sie mmap
'ed sind, haben sie keine Dateinamen, die mich davon abhalten, einfach system("diff file1.txt file2.txt")
aufzurufen.
Ich habe Dateideskriptoren (fd
s) zur Verfügung, und das ist mein einziger Einstiegspunkt zu den Daten. Gibt es eine Möglichkeit, ein Diff/Patch zu generieren, indem Sie die beiden geöffneten Dateien vergleichen? Wenn die Implementierung MIT/BSD lizenziert ist (dh: Nicht-GPL), umso besser.
Vielen Dank.
Ich kann nicht den Weg finden, 'Diff' mit 2 Standardeingabeargumenten als Dateien aufzurufen, aber das wäre eine Möglichkeit, dies zu tun. –
ein anderer Weg wäre, 'comm - -' zu verwenden und Zeilen alternativ zu übertragen, aber es funktioniert nur, wenn die Dateien synchronisiert sind. –
Ich weiß, Sie sagten, "kein externer Speicher verfügbar oder gewünscht".Aber haben Sie darüber nachgedacht, ein einfaches In-Memory-Dateisystem wie Ramfs zu verwenden? Es kommt im Grunde alle Linux-Distributionen und AFAIK seine Hauptanwendung ist es, ein temporäres Dateisystem während des frühen Boot-up zu werfen. –