| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > задать переменную окружения вызываемой программе |
| Автор: chubaka 3.5.2008, 02:47 |
| Разрабатывается fastcgi программа, которая является посредником между web-сервером и cgi-приложением. Как передать все переменные откружения (DOCUMENT_ROOM и т.д) программе cgi-скрипту, который буду вызывать. Другими словами: как передать переменные окружения вызываемой программе, чтобы она их получила с помощью getenv или как там их получают cgi-скрипты. Спасибо. ЗЫ: Кидайте любыми комментами в тему, а то замудрил немного |
| Автор: Бонифаций 3.5.2008, 03:09 | ||
Аргумент envp - это "окружение" программы. Если он не задан - передается окружение текущей программы. Так что вам нужен fork +execve |
| Автор: MAKCim 3.5.2008, 09:02 |
нет ты путаешь с библиотечными обертками execl()/execlp()/execle()/execv()/execvp(), которые определяют дополнительную функциональность execve() определяет прямой вызов системного сервиса sys_execve() без дополнительных проверок и пр. |
| Автор: chubaka 3.5.2008, 09:13 | ||
А как можна будет сохранить результат выполнения вызываемой программы с помощью execve, если сейчас я его popen'ом сохраняю ?
|
| Автор: chubaka 3.5.2008, 09:58 |
| О коде возврата. Ну да, насколько я понимаю это stdout. Тоесть то что программа в процессе работы на экран выводит. А можна пример ? |
| Автор: MAKCim 3.5.2008, 10:27 |
это не stdout я же специально спросил, что ты имел в виду код возврата - это целочисленное значение (возвращаемое в том числе посредством return в main()) пример чего? |
| Автор: chubaka 3.5.2008, 10:39 |
| Не код возврата, а поток вывода. Все что программа хотела вывести на экран. |
| Автор: MAKCim 3.5.2008, 15:31 | ||
fread() над pipe |
| Автор: chubaka 3.5.2008, 17:54 |
| спасибо! |
| Автор: xvr 4.5.2008, 15:06 | ||||
При popen'е вызываемая программа получит окружение текущей программы. Для изменения окружения текущей программы можно воспользоваться функцией setenv. Это ГОРАЗДО проще, чем вызывать через fork/execve и ловить вывод через pipe с сотоварищами |
| Автор: chubaka 4.5.2008, 18:05 | ||
xvr, дык мне вызываемой программе нужно передать также argv. Хотя конечно заставили задуматься. argv можна передать и так:
верно ? |
| Автор: xvr 4.5.2008, 18:58 | ||||
Именно, однако надо не забыть правильно заэскейпить эти argv, если там будут какие нибудь нехорошие символы (типа пробелов и пр) |