spawnv()

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

Прототип:

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

Аргументы:

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

Библиотека:

libc

Описание:

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


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

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

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

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

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


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

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

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

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

Коды ошибок:

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

ECHILD
Параметр mode равен P_WAIT, но потомок завершился до вызова waitpid() родителем.

Примеры:

Исполнение команды:

myprog ARG1 ARG2

в исходном коде выполняется следующим образом:

#include <stddef.h>
#include <process.h>
char *arg_list[] = { "myprog", "ARG1", "ARG2", NULL };
...
spawnv( P_WAIT, "myprog", arg_list );

Программа myprog будет найдена в том случае, если она размещена в текущей директории.

Классификация:

ЗОСРВ «Нейтрино»

Точка остановки потока
Смотри ниже
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Предостережения:

Если mode равно P_WAIT, данная функция является точкой остановки потока.

Тематические ссылки:

execl(), execle(), execlp(), execlpe(), execv(), execve(), execvp(), execvpe(), getenv(), putenv(), setenv(), spawn(), spawnl(), spawnle(), spawnlp(), spawnlpe(), spawnp(), spawnve(), spawnvp(), spawnvpe(), wait(), waitpid()




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