![]() |
|
Модераторы: xvr |
![]()
|
|
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Разрабатывается fastcgi программа, которая является посредником между web-сервером и cgi-приложением. Как передать все переменные откружения (DOCUMENT_ROOM и т.д) программе cgi-скрипту, который буду вызывать.
Другими словами: как передать переменные окружения вызываемой программе, чтобы она их получила с помощью getenv или как там их получают cgi-скрипты. Спасибо. ЗЫ: Кидайте любыми комментами в тему, а то замудрил немного |
|||
|
||||
| Бонифаций |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 827 Регистрация: 15.9.2005 Где: Brisbane Репутация: 1 Всего: 40 |
Аргумент envp - это "окружение" программы. Если он не задан - передается окружение текущей программы. Так что вам нужен fork +execve -------------------- Бонифаций. |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
нет ты путаешь с библиотечными обертками execl()/execlp()/execle()/execv()/execvp(), которые определяют дополнительную функциональность execve() определяет прямой вызов системного сервиса sys_execve() без дополнительных проверок и пр. -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
А как можна будет сохранить результат выполнения вызываемой программы с помощью execve, если сейчас я его popen'ом сохраняю ?
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
если ты о коде возврата в main() или о параметре, передаваемом в _exit()/exit(), то через wait() в родительском процессе через popen() ты получишь вывод программы на stdout -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
О коде возврата. Ну да, насколько я понимаю это stdout. Тоесть то что программа в процессе работы на экран выводит.
А можна пример ? |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
это не stdout я же специально спросил, что ты имел в виду код возврата - это целочисленное значение (возвращаемое в том числе посредством return в main()) пример чего? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
Не код возврата, а поток вывода. Все что программа хотела вывести на экран.
|
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
fread() над pipe -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
спасибо!
|
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
При popen'е вызываемая программа получит окружение текущей программы. Для изменения окружения текущей программы можно воспользоваться функцией setenv. Это ГОРАЗДО проще, чем вызывать через fork/execve и ловить вывод через pipe с сотоварищами |
||||
|
|||||
| chubaka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 8.6.2007 Репутация: нет Всего: нет |
xvr, дык мне вызываемой программе нужно передать также argv. Хотя конечно заставили задуматься. argv можна передать и так:
верно ? Это сообщение отредактировал(а) chubaka - 4.5.2008, 18:06 |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Именно, однако надо не забыть правильно заэскейпить эти argv, если там будут какие нибудь нехорошие символы (типа пробелов и пр) |
||||
|
|||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |