spawnve()

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

Прототип:

#include <process.h>
int spawnve( int mode,
const char *path,
char * const argv[],
char * const envp[] );

Аргументы:

mode
Описание данного параметра представлено на странице spawnl().
path
Полный путь поиска исполняемого файла.
argv
Указатель на массив аргументов процесса. Значение argv[0] не может быть установлено в NULL и должно представлять имя файла загружаемой программы. Последний член массива должен быть всегда равен NULL. Сам указатель argv не может быть равен NULL.
envp
Указатель на массив строк, представляющих переменные окружения. Последний член массива должен быть всегда равен NULL. Формат каждой строки должен быть следующим: variable=value. Если envp равен NULL, то дочерний процесс унаследует переменные окружения родителя.

Библиотека:

libc

Описание:

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


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

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

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

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

Если envp равно NULL, потомок будет наследовать переменные окружения родителя. Доступ к переменным окружения в дочернем процессе осуществляется через environ.

Следующие аргументы передаются неявному вызову spawn():

spawnve( mode, path, argv, envp )


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(), spawnvp(), spawnvpe(), wait(), waitpid()




Предыдущий раздел: Описание API системной библиотеки