Jak pobrac nazwe (login) uzytkownika aktualnie zalogowanego (Linux), nie wykozystujac zmiennej $USER ? bo to mozna zmienic ?!
echo $USER
user1
export USER=user2
echo $USER
user2
?!
dziekuje z jakiekolwiek zainteresowanie !
Jak pobrac nazwe (login) uzytkownika aktualnie zalogowanego (Linux), nie wykozystujac zmiennej $USER ? bo to mozna zmienic ?!
echo $USER
user1
export USER=user2
echo $USER
user2
?!
dziekuje z jakiekolwiek zainteresowanie !
No tak .... przekombinowalem !
jednak zwraca NULL (pod dwoma linuxami ?!)
No gdy uzylem (starego podejscia podobno) bylo ok
struct passwd *www;
www = getpwuid(getuid());
printf("%s\n",www->pw_name);
jadro 2.6.8 PLD i mandrake ? ja sie na tym dobrze nie znam wiec moze jakies uwagi ?
reichel napisał(a)
No tak .... przekombinowalem !
jednak zwraca NULL (pod dwoma linuxami ?!)
U mnie getlogin_r działa. Ale faktem jest, że używam FreeBSD, a nie Linuksa. Ale wiadomym jest, że Linuks nie trzyma się tak kurczowo POSIX-a jak FreeBSD (chociaż czuję, że po prostu źle stosujesz).
chyba nie bo z manuala (kilku) przyklad skopiowalem !
Właśnie znajomego męczyłem z Archlinuksem.
Jest u niego getlogin_r, ale:
Użyte przeze mnie:
#include <stdlib.h>
#include <unistd.h>
int
main()
{
char haslo[30];
getlogin_r(haslo, 30);
printf("%s\n", haslo);
exit(0);
}
U mnie tez krzaczki i zwraca blad = 2
#define ENOENT 2 /* No such file or directory */
chodz nie ma w opisie do getlogin_r ?(moze nie moze passwd albo innego w danym miejscu znalezc ?
Witam
Również mam problem z tym. Z Xterminala działa bez problemu. Problem zaczął się u mnie od wersji Ubuntu 7.10.
Ja pobieram nazwę może i nie za profesjonalnie ale zrobiłem mały skrypcik w bash-u który pobiera nazwę użytkownika i zapisuje do pliku a w programie wczytuję z tego pliku :)
Znalazłem rozwiązanie dzięki funkcji getenv
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
cout << getenv ("USER");
cout <<endl;
return 0;
}
Zamiast USER można wpisać HOME i wtedy mamy adres do katalogu domowego.
Pozdrowienia.
Znalazłem rozwiązanie dzięki funkcji getenv
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
cout << getenv ("USER");
cout <<endl;
return 0;
}
Zamiast USER można wpisać HOME i wtedy mamy adres do katalogu domowego.
Pozdrowienia.
To gorsze rozwiązanie. Nie zawsze będziesz miał ustawione ENVy.