Создать дочерний процесс с заданным списком аргументов, окружением и относительным путем
#include <process.h>int spawnlpe( int mode,const char *file,const char *arg0,const char *arg1,...,const char *argn,NULL,const char *envp[] );
/
, он используется как путь поиска файла. В противном случае путь поиска определяется по содержимому переменной окружения PATH
.NULL
недопустимо). Список аргументов должен завершаться NULL
.NULL
. Формат каждой строки должен быть следующим: variable=value. Если envp равен NULL
, то дочерний процесс унаследует переменные окружения родителя.libc
Функция spawnlpe() создает и исполняет новый дочерний процесс на основе файла file с использованием NULL
-терминированного списка аргументов в arg0 ... argn и установкой переменных окружения в соответствии с envp. Функция неявно вызывает spawnvpe().
Если новый процесс является shell-скриптом, то его первая строка должна начинаться с #! с последующим именем программы-интерпретатора (опционально могут быть также переданы его аргументы). Скрипт также должен иметь разрешения на исполнение. |
Данная функция не является частью стандарта POSIX 1003.1 и не дает гарантии одинакового исполнения во всех операционных системах. Она формирует массивы argv[] и envp[] перед неявным вызовом spawnp().
Перечисленные на рисунке функции в конечном счете вызывают spawn():
Аргументы передаются дочернему процессу путем передачи одного или нескольких указателей на соответствующие строки. При передаче потомку они объединяются, но каждый аргумент разделяется пробелом.
Если envp равно NULL
, потомок будет наследовать переменные окружения родителя. Доступ к переменным окружения в дочернем процессе осуществляется через environ.
Отношения родитель-потомок не означают, что потомок будет завершен при смерти родителя. |
Функция возвращает значение в зависимости от аргумента mode (подробнее см. на странице описания spawnl()).
Если возникла ошибка функция возвращает -1
, код ошибки записывается в errno.
Функция устанавливает коды ошибок, используемые spawn(), и дополнительно:
P_WAIT
, но потомок завершился до вызова waitpid() родителем. ЗОСРВ «Нейтрино»
Если mode равно P_WAIT
, данная функция является точкой остановки потока.
execl(), execle(), execlp(), execlpe(), execv(), execve(), execvp(), execvpe(), getenv(), putenv(), setenv(), spawn(), spawnl(), spawnle(), spawnlp(), spawnp(), spawnv(), spawnve(), spawnvp(), spawnvpe(), wait(), waitpid()
Предыдущий раздел: Описание API системной библиотеки