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