Есть ли способ перечислить переменные среды и получить значения с помощью C?
Перечислите переменные среды с помощью C в UNIX
Ответ 1
Взгляните на глобальную переменную environ
.
extern char **environ;
Он может быть определен в unistd.h
(посмотрите man-страницу environ (5)
выше).
Вот небольшая демо-версия кода, которую я написал:
#include <stdio.h>
extern char **environ;
int main()
{
for (char **env = environ; *env; ++env)
printf("%s\n", *env);
}
Здесь, как его использовать:
[email protected]:~/Desktop$ make enumenv CFLAGS=-std=c99
cc -std=c99 enumenv.c -o enumenv
[email protected]:~/Desktop$ ./enumenv
ORBIT_SOCKETDIR=/tmp/orbit-matt
SSH_AGENT_PID=1474
TERM=xterm
SHELL=/bin/bash
... (so forth)
Ответ 2
Информация об окружающей среде может быть передана как дополнительный параметр в main. Я не знаю, совместим он или нет, но он определенно работает (тестируется на Ubuntu). Просто определите дополнительный аргумент и его массив указателей char, завершенных указателем NULL. Следующее выведет лот.
#include <stdio>
int main(int argc, char *argv[], char *envp[])
{
int index = 0;
while (envp[index])
printf("%s\n", envp[index++];
}
Ответ 3
В книге "Интерфейс программирования Linux" есть демонстрационная версия.
Листинг 6-3. Отображение рабочей среды ------------------------------------------------ Proc/display_env.c
#include "tlpi_hdr.h"
extern char **environ;
int
main(int argc, char *argv[])
{
char **ep;
for (ep = environ; *ep != NULL; ep++)
puts(*ep);
exit(EXIT_SUCCESS);
}