envp
не является стандартом (ну, во всяком случае, не стандартом ISO C или C ++, хотя POSIX может иметь что-то для этого).
Тем не менее, envp
- это почти тот же формат, что и argv
, за исключением того, что у него нет управляющего argc
для его ограничения.
Каждый envp[x]
будет иметь форму "key=value"
, где key
- это имя переменной среды, а value
- это ее значение, что удивительно: -)
Вы должны обрабатывать элементы последовательно, пока не получите нулевой указатель, что-то вроде:
#include <stdio.h>
int main (int argc, char *argv[], char *envp[]) {
int i = 0;
while (envp[i] != NULL)
printf ("[%s]\n", envp[i++]);
return 0;
}
Запись Википедии для CGI дает дополнительную информацию, мы надеемся, не заполняя вас слишком большим количеством информации, как многословный RFC.
Копирование соответствующего материала, чтобы этот ответ был автономным:
- Переменные, специфичные для сервера:
- SERVER_SOFTWARE - имя / версия HTTP-сервера.
- SERVER_NAME - имя хоста сервера, может быть десятичным десятичным IP-адресом.
- GATEWAY_INTERFACE - CGI / версия.
- Запрос конкретных переменных:
- SERVER_PROTOCOL - HTTP / версия.
- SERVER_PORT - порт TCP (десятичный).
- REQUEST_METHOD - имя метода HTTP (см. Выше).
- PATH_INFO - суффикс пути, если он добавляется к URL-адресу после имени программы и косой черты.
- PATH_TRANSLATED - соответствующий полный путь, как предполагается сервером, если присутствует PATH_INFO.
- SCRIPT_NAME - относительный путь к программе, например /cgi-bin/script.cgi.
- QUERY_STRING - часть URL после? персонаж. Может состоять из пар * имя = значение, разделенных амперсандами (например, var1 = val1 & var2 = val2…), когда они используются для отправки данных формы, переданных с помощью метода GET, как определено в приложении HTML / x-www-form-urlencoded.
- REMOTE_HOST - имя хоста клиента, сбрасывается, если сервер не выполнял такой поиск.
- REMOTE_ADDR - IP-адрес клиента (десятичная точка).
- AUTH_TYPE - тип идентификации, если применимо.
- REMOTE_USER используется для определенных AUTH_TYPE.
- REMOTE_IDENT - видеть идентификатор, только если сервер выполнил такой поиск.
- CONTENT_TYPE - MIME-тип входных данных, если используется метод PUT или POST, как предусмотрено в заголовке HTTP.
- CONTENT_LENGTH - аналогично, размер входных данных (десятичный, в октетах), если он предоставляется через заголовок HTTP.
- Переменные, передаваемые пользовательским агентом (HTTP_ACCEPT, HTTP_ACCEPT_LANGUAGE, HTTP_USER_AGENT, HTTP_COOKIE и, возможно, другие), содержат значения соответствующих заголовков HTTP и, следовательно, имеют тот же смысл.
Помимо этого уровня детализации, вы, вероятно, собираетесь иметь , чтобы посмотреть RFC, я боюсь. Поиск по RFC3875 в Google должен найти его.
В частности, для POST
переменные среды включаются перед первой пустой строкой запроса (той, которая вводит тело сообщения). Они имеют вид:
Content-Type: application/wonderful_app_by_pax
Content-Length: 314159
где ключ нечувствителен к регистру, а значение следует за двоеточием.