GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie bekomme ich den Benutzernamen in C/C++ unter Linux?

#include <iostream>
#include <unistd.h>
int main()
{
    std::string Username = getlogin();
    std::cout << Username << std::endl;
    return 0 ;
}

Ein anderer Weg ist dieser -

#include <iostream>
using namespace std;
int main()
{
       cout << system("whoami");
}

Die Funktion getlogin_r() definiert in unistd.h gibt den Benutzernamen zurück. Siehe man getlogin_r für weitere Informationen.

Seine Signatur lautet:

int getlogin_r(char *buf, size_t bufsize);

Natürlich kann diese Funktion genauso einfach in C oder C++ aufgerufen werden.


Von http://www.unix.com/programming/21041-getting-username-c-program-unix.html :

/* whoami.c */
#define _PROGRAM_NAME "whoami"
#include <stdlib.h>
#include <pwd.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
  register struct passwd *pw;
  register uid_t uid;
  int c;

  uid = geteuid ();
  pw = getpwuid (uid);
  if (pw)
    {
      puts (pw->pw_name);
      exit (EXIT_SUCCESS);
    }
  fprintf (stderr,"%s: cannot find username for UID %u\n",
       _PROGRAM_NAME, (unsigned) uid);
  exit (EXIT_FAILURE);

}

Nehmen Sie einfach die Hauptzeilen und kapseln Sie sie in der Klasse ein:

class Env{
    public:
    static std::string getUserName()
    {
        uid_t uid = geteuid ();
        struct passwd *pw = getpwuid (uid);
        if (pw)
        {
            return std::string(pw->pw_name);
        }
        return {};
    }
};

Nur für C:

const char *getUserName()
{
  uid_t uid = geteuid();
  struct passwd *pw = getpwuid(uid);
  if (pw)
  {
    return pw->pw_name;
  }

  return "";
}

Linux
  1. Wie Linux auf den Mainframe kam

  2. So ändern Sie einen Benutzernamen in Linux

  3. Linux – Wie erhalte ich zuverlässig den Namen des Betriebssystems?

  4. So erhalten Sie die Verzeichnisgröße in Linux

  5. Wie erhalte ich die Anzahl der CPUs in Linux mit C?

So erhalten Sie die Größe eines Verzeichnisses in Linux

So erhalten Sie die Größe eines Verzeichnisses in Linux

So erhalten Sie den Dateinamen aus dem vollständigen Pfad in Linux

So erhalten Sie die Anzahl der Prozessoren / Kerne in Linux

So führen Sie C/C++-Programme unter Linux aus [Terminal &Eclipse]

So erhalten Sie Ihre IP-Adresse unter Linux