Mostrando informações do user na tela ( c++ )

Iniciado por Diego_Rocha, 31 de Março de 2007, 21:10

tópico anterior - próximo tópico

Diego_Rocha

Esse codigo, é para mostrar o nome do user o diretorio corrente, o shell que ele esta usando o uid o euid o gid o egid etc;


#ifndef _TESTE_
#define _TESTE_

#include <iostream>
#include <string>
#include <unistd.h>
#include <pwd.h>
using namespace std;

char *name;
char *current_dir;
char *shell;
__uid_t uid, euid;
__gid_t gid, egid;
__pid_t pid;

static inline void user(){
passwd *pw_entry;
pw_entry = getpwuid( geteuid());
if ( pw_entry == NULL) exit(1);
name = pw_entry->pw_name;
shell = getusershell();
}

static inline void __current_dir__(){
current_dir = get_current_dir_name();
}

static inline void __uid_gid__(){
uid = getuid();
euid = geteuid();
gid = getgid();
egid = getegid();
pid = getpid();
}

int main(){
user();
__current_dir__();
__uid_gid__();
cout <<"\nName:\t\t"<< name<< endl;
cout <<"Current Dir:\t"<< current_dir<< endl;
cout <<"Shell:\t\t"<< shell<< endl;
cout <<"uid:\t\t"<< uid<<"\neuid:\t\t"<< euid<< endl;
cout <<"gid:\t\t"<< gid<<"\negid:\t\t"<< egid<< endl;
cout <<"pid:\t\t"<< pid<<"\n\n";
return 0;
}
#endif


resultado


# ./rocha

Name:           root
Current Dir:    /root/script/teste
Shell:          /bin/bash
uid:            0
euid:           0
gid:            0
egid:           0
pid:            4095

Darcamo

Interessante.
Essas funções
Citar
getuid();
geteuid();
getgid();
getegid();
getpid();
são definidas na biblioteca pwd.h ou na unistd.h?

Talvez vc queira dar uma olhada na biblioteca glib
http://www.gtkmm.org/docs/glibmm-2.4/docs/reference/html/namespaceGlib.html
Esse link é da documentação da GTKmm que tem uma parte falando da Glib.
A Glib tem funções para pegar nome do usuário, pasta home, diretório atual, conversão da codificação de caracteres (tem inclusive um tipo de string que suporta UTF8), além de centenas de outras funções úteis. Tem até funções para se usar threads se vc tiver interessado.  ;D

Diego_Rocha

Citação de: Darcamo online 01 de Abril de 2007, 05:32
Interessante.
Essas funções
Citar
getuid();
geteuid();
getgid();
getegid();
getpid();
são definidas na biblioteca pwd.h ou na unistd.h?

Talvez vc queira dar uma olhada na biblioteca glib
http://www.gtkmm.org/docs/glibmm-2.4/docs/reference/html/namespaceGlib.html
Esse link é da documentação da GTKmm que tem uma parte falando da Glib.
A Glib tem funções para pegar nome do usuário, pasta home, diretório atual, conversão da codificação de caracteres (tem inclusive um tipo de string que suporta UTF8), além de centenas de outras funções úteis. Tem até funções para se usar threads se vc tiver interessado.  ;D

Essas funções getuid(), etc, são da unistd.h, o pwd.h eu so usei para pegar o nome do usuario, e vou da uma olhada agora no link q tu passou valeu cara t++