Linux: Symlink/Verknüpfung zu Datei erstellen



  • Hi,

    ich suche eine Möglichkeit einen Symlink, das auf eine vorhandene Datei zeigt, zu erstellen. Gut wäre es wenn ein schon existierender Symlink im "Symlinordner" überschrieben wird.

    Die Möglichkeit eine Kopie der Datei, mit fstream einlesen und neu erzeugen, zu erstellen kenn ich.... aber die Vorgabe ist eben wenn möglich ein Symlink/Verknüpfung zu erstellen.

    Ich suche da schon die ganze Zeit, allerdings konnte ich leider nichts passendes finden.

    Wenn jemand Codeschnippsel oder Links hat würde ich mich sehr freuen.

    Danke & Gruß 🙂



  • man 2 symlink



  • SG1 schrieb:

    man 2 symlink

    aaah wusste gar nicht, dass in den Manpages auch Programmierhilfen sind...:D👍

    Das einzige was da jetzt noch steht ist....

    If newpath exists it will not be overwritten.

    Eine andere Möglichkeit die ich jetzt gefunden habe ist einen befehl mit

    system("befehle");
    

    and die Konsole zu schicken.
    Dass man jetzt mit remove das schon vorhandene löschen kann ist schon mal super.... aber wie lautet der Konsolenbefehl für einen Symlink zu erstellen?



  • Ok ich glaube gefunden

    ln -s /Pfad/echte_Datei /Pfad/Symlink
    


  • Mufasa schrieb:

    SG1 schrieb:

    man 2 symlink

    aaah wusste gar nicht, dass in den Manpages auch Programmierhilfen sind...:D👍

    Das einzige was da jetzt noch steht ist....

    If newpath exists it will not be overwritten.

    unlink()

    Eine andere Möglichkeit die ich jetzt gefunden habe ist einen befehl mit

    system("befehle");
    

    and die Konsole zu schicken.

    *schauder*



  • SG1 schrieb:

    *schauder*

    Ok ich denke das ist deutlich genug.... ich mach das so wie Du sagst aus dem Programm heraus 😉

    hab das jetzt mal probiert

    void __fastcall TFormViewer::Button27Click(TObject *Sender)
    {
      const char *oldpath = "/altpfad/datei.txt";
      const char *newpath = "/neupfad/datei.cfg";
      int symlink (const char *oldpath, const char *newpath);
    }
    

    aber der macht irgendwie gar nix.... wird richtig kompiliert und auch beim Klick auf den Button kommt keine Fehlermeldung oder so.... aber trotzdem kein Symlink 😞
    Was stimmt denn da noch nicht?



  • ach ja noch was.... hat das vielleicht irgendwie was mit rechten zu tun, die das Programm hat? Weil das Programm mit dem das gemacht werden soll läuft unter normalen User-Rechten...

    aber einen Symlink aus der Shell heraus kann ich nur mit Root-Rechten erstellen. Vielleicht hängt das ja damit zusammen....?!?


  • Mod

    Mufasa schrieb:

    ach ja noch was.... hat das vielleicht irgendwie was mit rechten zu tun, die das Programm hat? Weil das Programm mit dem das gemacht werden soll läuft unter normalen User-Rechten...

    aber einen Symlink aus der Shell heraus kann ich nur mit Root-Rechten erstellen. Vielleicht hängt das ja damit zusammen....?!?

    Du bist witzig. Klar kann dein Programm nicht höhere Rechte erlangen als der, der es ausführt. Sonst wäre ja diee ganze Rechteverwatung für die Katz. Wenn nur root den fraglichen Link erstellen darf, dann muss das Programm auch mit Rootrechten ausgeführt werden.



  • Mufasa schrieb:

    Was stimmt denn da noch nicht?

    Das du offenbar nicht weißt, wie ein Funktionsaufruf in C++ aussieht. Was du dahin geschrieben hast, ist eine Funktionsdeklaration (btw. wenn du -pedantic-errors setzt, sollte er das auch nicht akzeptieren).


Anmelden zum Antworten