GNU/Linux >> Tutoriels Linux >  >> Linux

Comment obtenir le nom d'utilisateur en C/C++ sous Linux ?

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

Une autre façon est celle-ci -

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

La fonction getlogin_r() défini dans unistd.h renvoie le nom d'utilisateur. Voir man getlogin_r pour plus d'informations.

Sa signature est :

int getlogin_r(char *buf, size_t bufsize);

Inutile de dire que cette fonction peut tout aussi bien être appelée en C ou en C++.


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

}

Prenez simplement les grandes lignes et résumez-les en 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 {};
    }
};

Pour C uniquement :

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

  return "";
}

Linux
  1. Linux - Comment obtenir de manière fiable le nom du système d'exploitation ?

  2. Linux - Comment obtenir l'heure de l'horloge murale d'un processus en cours d'exécution ?

  3. Comment utiliser la commande id sous Linux

  4. Comment obtenir la taille du répertoire sous Linux

  5. Comment obtenir l'utilisation totale du processeur sous Linux en utilisant C++

Comment obtenir la taille d'un répertoire sous Linux

Comment obtenir la taille d'un répertoire sous Linux

Comment obtenir le nom de fichier à partir du chemin complet sous Linux

Comment obtenir le nombre de processeurs/cœurs sous Linux

Comment exécuter des programmes C/C++ sous Linux [Terminal &Eclipse]

Comment obtenir votre adresse IP sous Linux