Управление процессами и средой
С помощью подпрограмм для управления процессами можно запускать и останавливать процессы из программы, а также управлять ими, а с помощью подпрограмм для управления средой — получать и изменять сведения о среде операционной системы.
Функции управления процессами и средой
Маршрут | Использование |
---|---|
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 |
Да | Массив | Унаследовано от вызывающего процесса |