Переменная окружения $QUERY_STRING не включена в *envp[]
Я установил переменную среды с помощью следующей команды:
QUERY_STRING='This is my query string'
Это моя программа:
#include <stdio.h>
#include <stdlib.h>
void main (int argc, char *argv[])
{
printf("%s\n", getenv("QUERY_STRING"));
}
И вот что я получаю, когда запускаю программу:
mantis@toboggan /testing/cgi_download/temp $ echo $QUERY_STRING; ./a.out
This is my query string.
Segmentation fault
mantis@toboggan /testing/cgi_download/temp $
Похоже, что переменная окружения не устанавливается, и поэтому getenv()
возвращает NULL
,
Я действительно не знаю, почему это не работает. Другие переменные, такие как $PATH, доступны. Как мне установить эту переменную среды, чтобы она была доступна для моей программы?
uname -a:
Linux toboggan 3.18.7+ #755 PREEMPT Thu Feb 12 17:14:31 GMT 2015 armv6l GNU/Linux
2 ответа
Решение
Эта команда оболочки:
QUERY_STRING='This is my query string'
создает переменную оболочки, а не переменную окружения. Переменные оболочки локальны для процесса оболочки и не передаются дочерним процессам, таким как ваш a.out
, Чтобы сделать его переменной среды, вам нужно экспортировать его:
export QUERY_STRING
Вам необходимо экспортировать переменную, чтобы она распространялась в дочерние процессы:
export QUERY_STRING='This is my query string'