GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo obtener el nombre de usuario en C/C++ en Linux?

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

Otra forma es esta -

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

La función getlogin_r() definido en unistd.h devuelve el nombre de usuario. Ver man getlogin_r para más información.

Su firma es:

int getlogin_r(char *buf, size_t bufsize);

No hace falta decir que esta función se puede llamar fácilmente en C o C++.


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

}

Simplemente tome las líneas principales y encapsúlelas en clase:

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 para C:

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

  return "";
}

Linux
  1. Cómo usar el comando id en Linux

  2. Cómo obtener el tamaño del directorio en Linux

  3. ¿Cómo puedo obtener el estado del teclado en Linux?

  4. C++ Linux:obtenga la frecuencia de actualización de un monitor

  5. ¿Cómo obtener el tamaño físico de un archivo en Linux?

Cómo obtener el tamaño de un directorio en Linux

Cómo obtener el tamaño de un directorio en Linux

Cómo obtener el nombre de archivo de la ruta completa en Linux

Cómo obtener la cantidad de procesadores/núcleos en Linux

Cómo ejecutar programas C/C++ en Linux [Terminal y Eclipse]

Cómo obtener su dirección IP en Linux