_spawnvpe
, _wspawnvpe
Создает и выполняет новый процесс.
Внимание
Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
intptr_t _spawnvpe(
int mode,
const char *cmdname,
const char *const *argv,
const char *const *envp
);
intptr_t _wspawnvpe(
int mode,
const wchar_t *cmdname,
const wchar_t *const *argv,
const wchar_t *const *envp
);
Параметры
mode
Режим выполнения для вызывающего процесса
cmdname
Путь к выполняемому файлу
argv
Массив указателей на аргументы. Аргумент argv[0]
обычно является указателем на путь в реальном режиме или имя программы в защищенном режиме, а argv[1]
также через argv[n]
указатели на строки символов, формируя новый список аргументов. Аргумент argv[n+1]
должен быть указателем NULL
, чтобы пометить конец списка аргументов.
envp
Массив указателей на параметры среды
Возвращаемое значение
Возвращаемое значение синхронных функций _spawnvpe
или _wspawnvpe
(для параметра _P_WAIT
указано значение mode
) — это состояние завершения нового процесса. Возвращаемое значение асинхронной функции _spawnvpe
или _wspawnvpe
(для параметра_P_NOWAIT
указано значение _P_NOWAITO
или mode
) — это дескриптор процесса. Состояние выхода имеет значение 0, если процесс завершился обычным образом. Для состояния выхода можно задать ненулевое значение, если порожденный процесс специально вызывает процедуру exit
с ненулевым аргументом. Если новый процесс явно не установил положительное состояние выхода, то положительное состояние выхода указывает на ненормальный выход с прерыванием или прерыванием. Возвращаемое значение -1 указывает на ошибку (новый процесс не запущен). В этом случае errno
имеет одно из следующих значений:
значение | Описание |
---|---|
E2BIG |
Длина списка аргументов превышает 1024 байта. |
EINVAL |
Недопустимый аргументmode . |
ENOENT |
Файл или путь не найден. |
ENOEXEC |
Указанный файл не является исполняемым или имеет недопустимый формат исполняемого файла. |
ENOMEM |
Недостаточно памяти для выполнения нового процесса. |
Дополнительные сведения о кодах возврата см. в разделе errno
, _doserrno
_sys_errlist
и _sys_nerr
.
Замечания
Каждая из этих функций создает и выполняет новый процесс, передавая ему массив указателей на аргументы командной строки и массив указателей на параметры среды. Для поиска выполняемого файла в таких функциях используется переменная среды PATH
.
Эти функции проверяют свои параметры. Если указатель cmdname
argv
имеет значение NULL или argv
указывает на пустую строку или является пустой строкой, argv[0]
вызывается обработчик недопустимых параметров, как описано в разделе проверки параметров. Если продолжение выполнения разрешено, эти функции устанавливают для errno
значение EINVAL
и возвращают -1. Нет порожденных новых процессов.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Маршрут | Обязательный заголовок |
---|---|
_spawnvpe |
<stdio.h> или <process.h> |
_wspawnvpe |
<stdio.h> или <wchar.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
Пример
См. пример в _spawn
функциях. _wspawn
См. также
abort
atexit
_exec
, _wexec
функции
exit
, , _Exit
_exit
_flushall
_getmbcp
_onexit
, _onexit_m
_setmbcp
system
, _wsystem