2017-12-18 6 views
0

Ist es möglich, den Inhalt von symlink unter Verwendung von Qt zu ändern?Ziel von Symlink ohne Löschen ändern

Statisch QFile::link und nicht-statische beide Rückgabe false, wenn Linkname Dateipfad bereits vorhanden ist.

Ich möchte Symlink einfach retarget. Ein Analogon von ln -sf, aber Kreuzplattform.

Antwort

1

Kurze Antwort: Nein.

zitieren die docs:

Diese Funktion wird eine bereits bestehende Einheit im Dateisystem nicht überschrieben werden; In diesem Fall gibt link() false zurück und setzt error(), um RenameError zurückzugeben.

Die Lösung ist ziemlich einfach: Zuerst entfernen Sie den Link explizit, e. G. Verwenden Sie QFile::remove() auf den Link, dann verwenden Sie QFile::link() für die Zieldatei (wie Sie bereits getan haben).

BTW, ln -f mit oder ohne -s tut nichts anderes als Anruf unlink(). Dies kann bequem in der BusyBox sources (line 128) gesehen werden, während in der GNU coreutils ist es ein bisschen mehr verschleiert.

+0

Was ist das, ein Test, ob ich Trickfragen erkennen kann? Wenn Sie die Antwort bereits kennen und sie für nachfolgende Leser wichtig finden, warum schreiben Sie dann nicht Ihre eigene ergänzende Antwort? Und wenn Sie möchten, dass jemand anderes darauf antwortet, sollten Sie diesen Punkt zu Ihrer Frage hinzufügen oder besser einen neuen erstellen. – Murphy