Управление процессами и средой

С помощью подпрограмм для управления процессами можно запускать и останавливать процессы из программы, а также управлять ими, а с помощью подпрограмм для управления средой — получать и изменять сведения о среде операционной системы.

Функции управления процессами и средой

Маршрут Использование
abort Прерывает процесс без очистки буферов или вызова функций, зарегистрированных с помощью atexit и _onexit
assert Проверяет на наличие логических ошибок.
_ASSERT, _ASSERTE макросы Подобны assert, но доступны только в отладочных версиях библиотек времени выполнения
atexit Подпрограммы расписания для выполнения при завершении программы.
_beginthread, _beginthreadex Создает новый поток в процессе операционной системы Windows.
_cexit Выполняет процедуры завершения exit (например, очистка буферов), а затем возвращает управление вызывающей программе без прерывания процесса.
_c_exit Выполняет процедуры завершения _exit, а затем возвращает управление вызывающей программе без прерывания процесса.
_cwait Ожидает завершения другого процесса.
_endthread, _endthreadex Завершает поток операционной системы Windows.
_execl, _wexecl Выполняет новый процесс со списком аргументов.
_execle, _wexecle Выполняет новый процесс со списком аргументов и заданной средой.
_execlp, _wexeclp Выполняет новый процесс, используя переменную PATH и список аргументов.
_execlpe, _wexeclpe Выполняет новый процесс, используя переменную PATH, заданную среду и список аргументов
_execv, _wexecv Выполняет новый процесс с массивом аргументов
_execve, _wexecve Выполняет новый процесс с массивом аргументов и заданной средой
_execvp, _wexecvp Выполняет новый процесс, используя переменную PATH и массив аргументов.
_execvpe, _wexecvpe Выполняет новый процесс, используя переменную PATH, заданную среду и массив аргументов.
exit Вызывает функции, зарегистрированные с помощью atexit и _onexit, очищает все буферы, закрывает все открытые файлы и завершает процесс.
_exit Завершает процесс немедленно без вызова atexit или _onexit либо очистки буферов.
getenv, _wgetenv, getenv_s, _wgetenv_s Получает значение переменной среды.
_getpid Получает идентификатор процесса.
longjmp Восстанавливает сохраненную среду стека и использует ее для выполнения нелокальной команды goto.
_onexit Подпрограммы расписания, которые следует выполнять при завершении программы. Используются для обеспечения совместимости с Microsoft C/C++ версии 7.0 и более ранними версиями.
_pclose Ожидает новый обработчик команд и закрывает поток по связанному каналу.
perror, _wperror Сообщение об ошибке печати.
_pipe Создает канал для чтения и записи.
_popen, _wpopen Создает канал и выполняет команду.
_putenv, _wputenv, _putenv_s, _wputenv_s Получает или изменяет значения переменной среды.
raise Отправляет сигнал для вызывающего процесса.
setjmp Сохраняет среду стека. Используется для выполнения нелокальной команды goto.
signal Обрабатывает сигнал прерывания.
_spawnl, _wspawnl Создает процесс и выполняет его с указанным списком аргументов.
_spawnle, _wspawnle Создает процесс и выполняет его с указанным списком аргументов и средой.
_spawnlp, _wspawnlp Создает процесс и выполняет его, используя переменную PATH и указанный список аргументов.
_spawnlpe, _wspawnlpe Создает процесс и выполняет его, используя переменную PATH, указанную среду и список аргументов.
_spawnv, _wspawnv Создает процесс и выполняет его с указанным массивом аргументов.
_spawnve, _wspawnve Создает процесс и выполняет его с указанной средой и массивом аргументов.
_spawnvp, _wspawnvp Создает процесс и выполняет его, используя переменную PATH и указанный массив аргументов.
_spawnvpe, _wspawnvpe Создает процесс и выполняет его, используя переменную PATH, указанную среду и массив аргументов.
system, _wsystem Выполняет команду операционной системы.

В операционной системе Windows порожденный процесс эквивалентен процессу создания. Любой процесс может использовать функцию _cwait для ожидания любого другого процесса с известным идентификатором.

Разница между семействами _exec и _spawn заключается в том, что функция _spawn может переключить управление из нового процесса к вызывающему. В функции _spawn вызывающий и новый процесс находятся в памяти, если не указано _P_OVERLAY. _exec В функции новый процесс накладывает вызывающий процесс, поэтому элемент управления не может вернуться в вызывающий процесс, если в попытке начать выполнение нового процесса не возникает ошибка.

Различия между функциями в _exec и _spawn семействах включают метод определения файла, выполняемого в качестве нового процесса, формы, в которой аргументы передаются в новый процесс, и метод настройки среды, как показано в следующей таблице. Используйте функцию, передающую список аргументов, когда число аргументов является постоянным или известно в момент компиляции. Используйте функцию, передающую указатель в массив, содержащий аргументы, когда число аргументов определяется во время выполнения. Сведения в следующей таблице также применимы к аналогам функции _spawn и _exec с расширенными символами.

_spawn и _exec семейства функций

Функции Использование PATH переменной для поиска файла Соглашение о передаче аргументов Параметры среды
_execl, _spawnl No Список (List) Унаследовано от вызывающего процесса
_execle, _spawnle No Список (List) Указатель на таблицу среды для нового процесса, переданного в качестве последнего аргумента
_execlp, _spawnlp Да Список (List) Унаследовано от вызывающего процесса
_execvpe, _spawnvpe Да Массив Указатель на таблицу среды для нового процесса, переданного в качестве последнего аргумента
_execlpe, _spawnlpe Да Список (List) Указатель на таблицу среды для нового процесса, переданного в качестве последнего аргумента
_execv, _spawnv No Массив Унаследовано от вызывающего процесса
_execve, _spawnve No Массив Указатель на таблицу среды для нового процесса, переданного в качестве последнего аргумента
_execvp, _spawnvp Да Массив Унаследовано от вызывающего процесса

См. также

Универсальные подпрограммы среды выполнения C по категориям