issoftlink



  • wir sollen für ein praktikum eine isSoftLink funktion schreiben. Naja sollte eigentlich nicht so schwer sein, die funktion soll einen zeichenkette mit der datei welche geprüft werden soll übernehmen und eine zeichenkette mit der datei zurück geben auf die datei1 Zeigt. Nur fehlt mir gerade jedweder ansatz. Bräuchte nur mal nen ganz groben tipp wie ich da rangehen sollte.

    Steht in datei 1 der Softlinkt als Text? Bräuchte ich den also nur mit read auslesen und den string der dabei entsteht auswerten? Oder muss ich irgendwie anders da vorgehen?



  • gugg dir mal in den manpages

    #include <sys/stat.h>
    
    int lstat(const char *path, struct stat *buf);
    

    an, ich denk, des sollte dein problem lösen, is glaub ich auch n beispiel dabei, ansonsten online guggn



  • lstat liefert aber afaik nur gesetzte hardlinks das hab ich schon oft genug für andere sachen verwendet. Bei Softlinks hilft das glaube ich eher weniger weiter, wüsste auch nicht genau wodurch.



  • Fedaykin schrieb:

    lstat liefert aber afaik nur gesetzte hardlinks das hab ich schon oft genug für andere sachen verwendet. Bei Softlinks hilft das glaube ich eher weniger weiter, wüsste auch nicht genau wodurch.

    Gegen "afaik", "glaube ich" und "wüsste nicht genau" hilft auch das Lesen der Manpage 😉

    Prüfe st_mode auf S_IFLNK, und gut ist.



  • argh sorry das passiert am frühen morgen lstat macht nicht perfekt das was ich brauche aber beim stöbern in der man page bin ich auf readLink gestoßen was ich brauche. Ich brauche ja den namen zu der eigentlichen datei und der steht dann in der stat struktur gar nicht drinne. Aber die paar Hinweise haben schon viel gebracht.



  • Fedaykin schrieb:

    Ich brauche ja den namen zu der eigentlichen datei

    Vielleicht verstehe ich dich jetzt falsch, aber für eine Funktion "isSoftLink", die diesem Namen auch gerecht wird, brauchst du das Ziel des Links nicht. Da reicht lstat komplett aus.



  • ja problem ist halt aufgabenstellung die ist wortwörtlich so:

    Schreiben Sie eine Funktion isSoftlink(), welche testet, ob der als Parameter übergebene Dateiname ein Softlink ist. Die Funktion soll einen Zeiger auf eine Zeichenkette mit dem Namen der Datei, auf die der Softlink zeigt, oder NULL zurückgeben. Vereinbaren Sie dazu in der Funktion ein Feld (Speicherklasse static) mit 256 Zeichen Länge. Schreiben Sie ein Testprogramm!


Anmelden zum Antworten