GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere il nome utente in C/C++ in Linux?

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

Un altro modo è questo -

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

La funzione getlogin_r() definito in unistd.h restituisce il nome utente. Vedi man getlogin_r per ulteriori informazioni.

La sua firma è:

int getlogin_r(char *buf, size_t bufsize);

Inutile dire che questa funzione può essere richiamata altrettanto facilmente in C o C++.


Da 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);

}

Basta prendere le linee principali e incapsularle in classe:

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 {};
    }
};

Solo per C:

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

  return "";
}

Linux
  1. Come utilizzare il comando id in Linux

  2. Come ottenere il numero di CPU in Linux usando C?

  3. Linux C++:ottieni la frequenza di aggiornamento di un monitor

  4. Come ottenere il numero di dischi fisici in Linux?

  5. Come ottenere ldapsearch su Scientific Linux?

Come ottenere la dimensione di una directory in Linux

Come ottenere la dimensione di una directory in Linux

Come ottenere il nome del file dal percorso completo in Linux

Come ottenere il numero di processori/core in Linux

Come eseguire programmi C/C++ in Linux [Terminale ed Eclipse]

Come ottenere il tuo indirizzo IP su Linux