Autor Tópico: Mostrando informações do user na tela ( c++ )  (Lida 3762 vezes)

Offline Diego_Rocha

  • Usuário Ubuntu
  • *
  • Mensagens: 372
  • Slackware current
    • Ver perfil
Mostrando informações do user na tela ( c++ )
« Online: 31 de MAR?O de 2007, 21:10 »
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;

Código: [Selecionar]
#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

Código: [Selecionar]
# ./rocha

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

Darcamo

  • Visitante
Re: Mostrando informações do user na tela ( c++ )
« Resposta #1 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

Offline Diego_Rocha

  • Usuário Ubuntu
  • *
  • Mensagens: 372
  • Slackware current
    • Ver perfil
Re: Mostrando informações do user na tela ( c++ )
« Resposta #2 Online: 01 de Abril de 2007, 11:52 »
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++