Anzeige:
Ergebnis 1 bis 6 von 6

Thema: fopen(filename,"w") überschreibt link

  1. #1
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650

    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?
    Mit Hardlinks gibt es das Problem wohl nicht, oder?

  2. #2
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    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:
    Code:
           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.
    Code:
          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

  3. #3
    Registrierter Benutzer
    Registriert seit
    08.11.2002
    Ort
    Hennef
    Beiträge
    106
    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

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    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.

  5. #5
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    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?

  6. #6
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    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?

    Wo kann man eigentlich den ANSI-Standard downloaden um mal die Spezifikationen genau nachzulesen?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •