Archiv verlassen und diese Seite im Standarddesign anzeigen : fopen(filename,"w") überschreibt link
Mit einem C-Programm, das eine Datei mit "w" öffnet, habe ich das Problem das wenn ein Softlink auf die Datei verweist der Softlink gelöscht und durch eine reguläre Datei ersetzt wird :(
Gibt es eine Option mit der der Link erhalten bleibt? :confused:
Mit Hardlinks gibt es das Problem wohl nicht, oder? :confused:
tkortkamp
10-11-2002, 20:18
Was möchtest du überhaupt erreichen?
Mit "w" erstellst du immer einen neue Datei. Und das möchtest du doch gerade nicht, oder?
Zitat aus man fopen:
w Truncate file to zero length or create text file for writing.
The stream is positioned at the beginning of the file.
Da ist es logisch das der symbolische Link danach nicht mehr existiert.
Um einen existierende Datei zu öffnen und etwas in sie zu schreiben, musst du fopen "a" als Option übergeben.
a Open for appending (writing at end of file). The file is cre-
ated if it does not exist. The stream is positioned at the end
of the file.
Dabei sollte eigentlich der symbolische Link dann nicht entfernt werden.
c ya,
Tobias
Hallo,
kann ich jetzt hier nicht reproduzieren.
Bei mir funktioniert das mit dem symlink
fopen folgt dem symbolichen Link
und bezieht sich nicht auf den Link selbst
mehr info?
Gruss
Also das Lesen ist mit Symlink kein Problem, aber nach fopen mit w ist der Link weg und die Datei neu angelegt. Wenn allerdings ein Verzeichnis im Pfad zu der Datei steht, ist bleibt der Symlink erhalten.
Jetzt habe ich das Problem mit Hardlinks gelöst. Damit ist man zwar eingeschränkt, weil Hardlinks nicht über Partitionsgrenzen reichen, aber das reicht mir erstmal. Ansosten kann ich ja rsync oder cp oder ganz was anderes nehmen.
Argh, jetzt habe ich das Problem auch mit hardlinks: nachdem die gelinkte Datei mit "w" geöffnet wurde, gibt es den hardlink nicht mehr und die Datei wurde lokal neu angelegt :(
Was kann man da machen?
:confused:
Anscheinend wäre das Problem wohl mit "r+" statt "w" gelöst, wenn direkt nach fopen die Datei geleet wird; mal nachsehen wie das zu implementieren ist, oder hat hier jemand gerade einen passenden Einzeiler parat? :rolleyes:
Wo kann man eigentlich den ANSI-Standard downloaden um mal die Spezifikationen genau nachzulesen? :confused:
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.