Aktueller Benutzer



  • Hallo zusammen,
    Ich benötige für mein Programm den aktuellen angemeldeten Benutzer und den Pfad zum Home Verzeichnis.
    Unter Windows gibt es die Function GetUserName, gibt es unter Linux auch sowas oder wie bekomme ich das heraus ????

    Vielen Dank im voraus



  • Das einzige was ich dir empfehlen kann, ist dir den Quellcode von

    who
    

    anzusehen : Tip mal ein

    who am i
    

    !

    [ Dieser Beitrag wurde am 10.04.2003 um 13:40 Uhr von ºgrimmsenº® editiert. ]



  • info libc
    -> Users and Groups



  • Original erstellt von Shuffel:
    **Hallo zusammen,
    Ich benötige für mein Programm den aktuellen angemeldeten Benutzer und den Pfad zum Home Verzeichnis.
    Unter Windows gibt es die Function GetUserName, gibt es unter Linux auch sowas oder wie bekomme ich das heraus ????

    Vielen Dank im voraus**

    zuerst den nutzer

    geteuid(); 
    oder 
    getuid();
     müsste dir helfen
    

    für das Homeverzeichniss

    getenv("HOME")
    

    denke ich mal

    am besten du schaust mal bei gnu nach, denn die sh-utils sind wohl das beste Beispiel
    http://www.gnu.org/directory/sysadmin/shellutils.html

    Joe



  • Vielen Dank schonmal.
    Ich werde eure Tips gleich mal anschauen und durchprobieren.
    Das Programm muß auf beiden Plattformen laufen, ich aber progge unter windows und fahre nur ab und zu einen Linux-Lauf. Werde mich aber melden wenn es geklappt hat.



  • Hi,

    #include <unistd.h>
    
    char *getlogin ( void ); //liefert dir den loginnamen zu einem prozess oder NULL
    

    Alternativ kannst du auch folgenden Aufruf machen und das entsprechende
    Strukturelement auslesen:

    getpwuid ( getuid () ); //liefert einen zeiger auf ein struct passwd
    

    Bei dieser Methode ist es allerdings nicht gewaehrleistet, dass du den korrekten
    Benutzer herausbekommst, falls dieser mehrere Loginnamen hat.

    mfg
    v R

    [ Dieser Beitrag wurde am 10.04.2003 um 18:22 Uhr von virtuell Realisticer editiert. ]



  • Quick & Dirty:

    for i in $( who | cut -f1 -d" " | uniq );do 
      echo -n "$i->";
      getent passwd $i| cut -f 6 -d ":";
    done
    

Anmelden zum Antworten