LINUX.ORG.RU

get username on C


0

0

как на С определить username ? например как passwd определяет что его запустил юзер vasia ? насколько я понимаю это содержится в переменных окружения ?

anonymous

В линуксе есть env

USERNAME=

Соответственно дергается через getenv()  :)

Дока как всегда есть в  man getenv

anonymous
()

если вы не пишете свой /bin/login, то man getuid getlogin

получать имя пользователя через переменную окружения - сомнительное занятие :)

в разных системах и окружениях это могут быть UNAME USER LOGIN LOGNAME, по крайней мере сталкивался с такими разночтениями между Linux,Solaris,HP-UX

MKuznetsov ★★★★★
()
Ответ на: комментарий от aton

> Определяем UID (man getuid), и по нему ищем имя в /etc/passwd

Тогда уж не "ищем имя в /etc/passwd", а используем getpwuid() или getpwuid_r()

Onanim
()

Чисто в качестве дополнения.

Есть функции char * getlogin (void) и char * cuserid (char *string) Вторая deprecated, а первая вроде бы ничего.

Далее в мануале по этим функциям написано буквально следующее "For most purposes, it is more useful to use the environment variable LOGNAME to find out who the user is. This is more flexible precisely because the user can set LOGNAME arbitrarily."

anonymous
()
Ответ на: комментарий от anonymous

--- sample.c ---
#include <stdlib.h>
#include <stdio.h>
int main() {
  printf("Your are %s\n",getenv("LOGNAME"));
  return 0;
}
----
$ gcc sample.c -o sample

$ LOGNAME=petrovich ; sample
Your are petrovich
---
вперёд - сделаем подарок кулкакерам, будем опираться на переменные окружения!!



MKuznetsov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.