Home Verzeichnis ermitteln



  • Hallo!

    Bei Linux legen eigentlich alle Programme im Home-Ordner einen Unterordner an (mit Punkt davor).

    So geht es:

    mkdir("/home/stefan/.MeinSpiel", ...)
    

    Allerdings heißen ja nicht alle User stefan 😉 .

    mkdir("~/.MeinSpiel", ...)
    

    Klappt nicht.

    Wie ermittel ich den Pfad für den Home-Ordner?



  • Hallo,

    das steht in der /etc/passwd.



  • das und das könnte dir weiterhelfen

    z.b. gleich der erste eintrag



  • Danke für die rasche Antwort.

    Muss ich den dann bei jedem Start die passwd-Datei öffnen (die ist doch sicher auch nur roots zugänglich, außer über die speziellen Programme).

    Geht das nicht einfacher? 😮

    Ich habe auch mal versucht die Sourcen der anderen Programme anzugucken, aber da find ich sowas einfach nicht.

    @Xantus: Danke, als hätte ich das nicht schon versucht? Bei "home verzeichnis c++" oder "home verzeichnis finden c++" und all das habe ich jedenfalls nichts gefunden.

    Okay, ich hab was, danke!



  • stefan315 schrieb:

    Okay, ich hab was, danke!

    ja und wie machst du es jetzt? über die umgebungsvariable?

    stefan315 schrieb:

    @Xantus: Danke, als hätte ich das nicht schon versucht? Bei "home verzeichnis c++" oder "home verzeichnis finden c++" und all das habe ich jedenfalls nichts gefunden.

    mit deutsch kommst du in subjektiv geschätzten 70-90% der (Such-)Fälle nicht weiter, deswegen ist ja im zweiten link auch schon "linux C get home directory path" angegeben 😉



  • man: getenv
    Das einfach für $HOME aufrufen.

    stefan315: /etc/passwd ist idR world-readable, gibt ja Shadow-Passwords... Aber sag mal: Brauchst Du nur das Homedir für den aktuellen Benutzer oder für einen x-beliebigen User?



  • Xantus schrieb:

    ja und wie machst du es jetzt? über die umgebungsvariable?

    Genau.

    Xantus schrieb:

    mit deutsch kommst du in subjektiv geschätzten 70-90% der (Such-)Fälle nicht weiter, deswegen ist ja im zweiten link auch schon "linux C get home directory path" angegeben 😉

    Ich werde es mir merken. Das beim 2. Link schon was vorgegeben war habe ich nicht auf den ersten Blick erkannt.

    nman schrieb:

    man: getenv
    Das einfach für $HOME aufrufen.

    So mache ich das jetzt auch.

    nman schrieb:

    stefan315: /etc/passwd ist idR world-readable, gibt ja Shadow-Passwords... Aber sag mal: Brauchst Du nur das Homedir für den aktuellen Benutzer oder für einen x-beliebigen User?

    Es genügt das Verzeichnis des aktuellen Nutzers. Aber das mit der Umgebungsvariable ist eigentlich ausreichend.

    Danke nochmal an alle!



  • Zum auslesen von /etc/passwd gibt es auch ein paar praktische Funktionen, wie man: getpwnam(3)


Anmelden zum Antworten