Links in richtig erkennen



  • Hi,

    ich hab einige Schwierigkeiten beim Programmieren.

    Und zwar schreibe ich ein Programm das verschiedene Verzeichnisse überprüft.

    Das Problem das ich hab ist das ich auch einen symbolischen Link erkennen möchte. Also wenn ein Verzeichniss auf ein anderes verlinkt ist. z.b.

    /usr/test -> /tmp/neu

    Ich hab das bisher so gemacht das ich das erstmal mit "ls" auflisten lasse und dann den String ab dem "->" abschneide.

    Nun habe ich aber das Problem das es bei Links die mit relativen Verzeichnissen angegeben sind das natürlich nicht richtig funktioniert.
    Also z.b.

    /usr/test -> var/neu
    oder
    /usr/test -> ../tmp/neu

    Da müsste ich jedes mal überprüfen was vorne dran steht und das dann ändern.

    Gibt es da vielleicht ein Möglichkeit das zu erkennen? Also wohin der Link zeigt oder so?

    Grüße



  • Programmierst Du Shell oder C++ oder irgendwas anderes?



  • Ich programmiere in C++. Aber mit popen benutze ich dann allerdings auch ein paar Shell Befehle die ich sonst in C++ nicht so einfach nutzen kann.



  • Dafür verwendet man idR man: stat(2) und man: realpath(3).



  • Danke.

    Aber das Problem ist das auf dem System nicht alle Befehle verfügbar sind da es sich um ein eingeschänktes/minimiertes System handelt.

    Also wäre das mit dem stat zwar möglich aber das mit dem realpath leider nicht.

    Grüße



  • dein system kennt kein realpath? wie findet ls dann das ziel des links?



  • namenlos schrieb:

    dein system kennt kein realpath? wie findet ls dann das ziel des links?

    Kann nicht sein, das sollte doch seit 4.4BSD dabei sein, oder? (In der SUS ist es auf alle Fälle enthalten.)

    mark01: Hast Du vielleicht einfach vergessen, <stdlib.h> bzw. <unistd.h> einzubinden?


Log in to reply