Создать дочерний процесс с заданием списка аргументов и относительного пути
#include <process.h>int spawnvp( int mode,const char *file,char * const argv[] );
/
, он используется как путь поиска файла. В противном случае путь поиска определяется по содержимому переменной окружения PATH
.NULL
и должно представлять имя файла загружаемой программы. Последний член массива должен быть всегда равен NULL
. Сам указатель argv не может быть равен NULL
.libc
Функция spawnvp() создает и исполняет новый дочерний процесс на основе файла file с использованием NULL
-терминированного списка аргументов в argv. Функция неявно вызывает spawnvpe().
Если новый процесс является shell-скриптом, то его первая строка должна начинаться с #! с последующим именем программы-интерпретатора (опционально могут быть также переданы его аргументы). Скрипт также должен иметь разрешения на исполнение. |
Данная функция не является частью стандарта POSIX 1003.1 и не дает гарантии одинакового исполнения во всех операционных системах. Она неявно вызывает spawnvpe().
Перечисленные на рисунке функции в конечном счете вызывают spawn():
Дочерний процесс наследует переменные окружения родителя (или просто окружение). Их значения могут быть определены утилитами export и env или функциями putenv() и setenv(). Программа может считать их через функцию getenv().
Отношения родитель-потомок не означают, что потомок будет завершен при смерти родителя. |
Функция возвращает значение в зависимости от аргумента 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(), spawnlpe(), spawnp(), spawnv(), spawnve(), spawnvpe(), wait(), waitpid()
Предыдущий раздел: Описание API системной библиотеки