spawnvp()

Создать дочерний процесс с заданием списка аргументов и относительного пути

Прототип:

#include <process.h>
int spawnvp( int mode,
const char *file,
char * const argv[] );

Аргументы:

mode
Описание данного параметра представлено на странице spawnl().
file
Имя исполняемого файла. Если этот параметр содержит /, он используется как путь поиска файла. В противном случае путь поиска определяется по содержимому переменной окружения PATH.
argv
Указатель на массив аргументов процесса. Значение argv[0] не может быть установлено в NULL и должно представлять имя файла загружаемой программы. Последний член массива должен быть всегда равен NULL. Сам указатель argv не может быть равен NULL.

Библиотека:

libc

Описание:

Функция spawnvp() создает и исполняет новый дочерний процесс на основе файла file с использованием NULL-терминированного списка аргументов в argv. Функция неявно вызывает spawnvpe().


Note: Если новый процесс является shell-скриптом, то его первая строка должна начинаться с #! с последующим именем программы-интерпретатора (опционально могут быть также переданы его аргументы). Скрипт также должен иметь разрешения на исполнение.

Данная функция не является частью стандарта POSIX 1003.1 и не дает гарантии одинакового исполнения во всех операционных системах. Она неявно вызывает spawnvpe().

Перечисленные на рисунке функции в конечном счете вызывают spawn():

spawnall.png
Рисунок 1. Большинство функций spawn*() предпринимают ряд настроечных действий перед отправкой сообщения procnto-* функцией spawn()

Дочерний процесс наследует переменные окружения родителя (или просто окружение). Их значения могут быть определены утилитами export и env или функциями putenv() и setenv(). Программа может считать их через функцию getenv().


Note: Отношения родитель-потомок не означают, что потомок будет завершен при смерти родителя.

Возвращаемое значение:

Функция возвращает значение в зависимости от аргумента mode (подробнее см. на странице описания spawnl()).

Если возникла ошибка функция возвращает -1, код ошибки записывается в errno.

Коды ошибок:

Функция устанавливает коды ошибок, используемые spawn(), и дополнительно:

ECHILD
Параметр mode равен 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 системной библиотеки