Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Linux, C++, переменная среды UID

41K
29 февраля 2012 года
Govard
28 / / 26.10.2011
Здравствуйте. Возникла необходимость извлечь несколько переменных среды. Я воспользовался функцией getenv() и вот какая странность возникла:
 
Код:
int main()
{
    cout << getenv("SHELL") << endl;
    cout << getenv("HOME") << endl;
    cout << getenv("UID") << endl;
    cout << getenv("EUID") << endl;
    return 0;
}

Значения переменных SHELL и HOME функция выводит, а UID и EUID нет.
Но команда в консоли:
 
Код:
$ set | grep UID

показывает
 
Код:
EUID=1000
UID=1000

Таким же образом не хотят выводиться все переменные среды, имеющие числовое значение. Вопрос простой: как быть? Как получить значения этих переменных?
OS: Gentoo Linux.
412
01 марта 2012 года
grgdvo
323 / / 04.07.2007
set - внутренняя команда оболочки (bash, csh), она выводит переменные среды сессии пользователя.
Когда вы запускаете свое приложение не факт, что оболочка будет наследовать все свои переменные среды дочернему процессу, поэтому возможно, что у вас просто нет UID и EUID.

По поводу числовых - такого не может быть, все переменные трактуются как строки.
41K
01 марта 2012 года
Govard
28 / / 26.10.2011
Цитата: grgdvo
set - внутренняя команда оболочки (bash, csh), она выводит переменные среды сессии пользователя.
Когда вы запускаете свое приложение не факт, что оболочка будет наследовать все свои переменные среды дочернему процессу, поэтому возможно, что у вас просто нет UID и EUID.

По поводу числовых - такого не может быть, все переменные трактуются как строки.



Да, вы правы, спасибо. С числами было лишь совпадение. Я и сам понимал, что это абсурд, что getenv в любом случае вернет char*. Вот, что я сделал:

 
Код:
int main(int argc, char *argv[], char *env[])
{
    while (*env) {
        cout << *env++ << endl;
    }
    return 0;
}

и таким образом вывел список переменных среды, которые доступны программе. Жаль, сразу не догадался. Спасибо за ответ!

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог