Переменная окружения $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'
Другие вопросы по тегам