Создать дочерний процесс с заданным списком аргументов, окружением и относительным путем
#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 системной библиотеки