Oliver, Oliver Block schrieb:
Am Dienstag, 16. Mai 2006 18:34 schrieb GUNREBEN, PETER (Peter):
cat LargeFile.txt | buffer | cat ToPrependFile.txt - > LargeFile.txt
2) Der "buffer" liest die pipe, speichert den Inhalt zwischen und schreibt ihn dann in die nächste pipe.
Dann sparst Du Dir ja im Grunde keinen Speicherplatz, oder?
Was meinst Du damit? Dominik hat doch das Problem, dass er auf der Platte keine 12 GByte reservieren will, nur damit er die 6 GByte grosse Datei umkopieren kann. Über die "buffer" Lösung wird ja lediglich ein Teil der Datei im RAM gehalten und auf der Platte werden nur 6 GByte benötigt.
Wie sieht buffer aus? Könnte man STDIN auch einfach mittels exec auf STDOUT umleiten, um es in die pipe zu geben?
Kannst Du 'mal genauer erklären, was Du vor hast? Ich muss uebrigens leider zugeben, dass meine Lösung wirklich nicht sicher ist und daher mit Vorsicht zu geniessen ist. Das Problem ist, dass "cat ToPrependFile.txt" unter Umständen schon anfängt zu schreiben, bevor der buffer die Datei im Speicher hat. Um das zu verhindern habe ich folgendes probiert: cat ToPrependFile.txt LargeFile.txt | buffer -p 100 > LargeFile.txt Leider funktioniert die obige Zeile auch nicht sicher, wobei ich nicht verstehe, warum. Die "-p 100" Option sollte den buffer dazu bringen, erst dann zu schreiben, wenn der buffer voll ist (default 1 MByte). Wenn nun ToPrependFile.txt deutlich kleiner als 1 MByte ist, hätte ich erwartet, dass es problemlos funktioniert. Das ist aber leider nicht der Fall. Hat jemand eine Erklärung? Gruss, Peter.