Поделиться через


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

Используйте процедуры управления процессами для запуска, остановки и управления процессами из программы. Используйте процедуры управления средой выполнения, чтобы получать и изменять сведения о среде операционной системы.

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

Подпрограмма

Применение

Эквивалент в .NET Framework

abort

Прерывает процесс без сбрасывания буферов или вызова функций, зарегистрированных atexit и _onexit

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

assert

Тест на логическую ошибку

System::Diagnostics::Debug::Assert

Макросы _ASSERT, _ASSERTE

Аналогичны assert, но доступны только в версиях отладки библиотек времени выполнения

System::Diagnostics::Debug::Assert

atexit

Поставить в очередь процедуры для выполнения при завершении работы программы

System::Diagnostics::Process::Exited

_beginthread, _beginthreadex

Создают новый поток в процессе операционной системы Windows

System::Threading::Thread::Start

_cexit

Выполняет процедуры завершения exit (например, сброс буферов), а затем возвращает управление вызывающей программе без завершения процесса

System::Diagnostics::Process::CloseMainWindow

_c_exit

Выполняет процедуры завершения _exit, а затем возвращает управление вызывающей программе без завершения процесса

System::Diagnostics::Process::CloseMainWindow

_cwait

Ожидает завершение другого процесса

System::Diagnostics::Process::WaitForExit

_endthread, _endthreadex

Завершают поток операционной системы Windows

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

_execl, _wexecl

Выполнят новый процесс со списком аргументов

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_execle, _wexecle

Выполняют новый процесс со списком аргументов и указанной средой

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_execlp, _wexeclp

Выполняют новый процесс с использованием переменной PATH и списка аргументов

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_execlpe, _wexeclpe

Выполняют новый процесс с использованием переменной PATH, указанной среды и списка аргументов

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_execv, _wexecv

Выполнят новый процесс с массивом аргументов

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_execve, _wexecve

Выполняют новый процесс с массивом аргументов и указанной средой

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_execvp, _wexecvp

Выполняют новый процесс с использованием переменной PATH и массива аргументов

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_execvpe, _wexecvpe

Выполняют новый процесс с использованием переменной PATH, указанной среды и массива аргументов

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

exit

Вызывает функции, зарегистрированные atexit и _onexit, сбрасывает все буферы, закрывает все открытые файлы и завершает процесс

System::Diagnostics::Process::Kill

_exit

Завершает процесс немедленно без вызова atexit или _onexit или сбрасывания буферов

System::Diagnostics::Process::Kill

getenv, _wgetenv, getenv_s, _wgetenv_s

Получение значения переменной среды

System::Environment::GetEnvironmentVariable

_getpid

Получает идентификатор процесса

System::Diagnostics::Process::Id

longjmp

Восстанавливает сохраненную среду стека; используйте для выполнения дальнего goto

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

_onexit

Планирует процедуры для выполнения при завершении работы программы; используйте для совместимости с версией Microsoft C/C++ 7.0 и более ранними

System::Diagnostics::Process::Exited

_pclose

Ожидает новый обработчик команд и закрывает поток связанного канала

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

perror, _wperror

Печатают сообщение об ошибке.

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

_pipe

Создает канал для чтения и записи.

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

_popen, _wpopen

Создают канал и выполняют команду

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

_putenv, _wputenv, _putenv_s, _wputenv_s

Добавляют или изменяют значение переменной среды

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

raise

Отправляет сигнал вызывающему процессу

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

setjmp

Сохраняет среду стека; используйте для выполнения дальнего goto

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

signal

Обрабатывает сигнал прерывания

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

_spawnl, _wspawnl

Создают и выполняют новый процесса с указанным списком аргументов

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_spawnle, _wspawnle

Создают и выполняют новый процесс с указанным списком аргументов и средой

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_spawnlp, _wspawnlp

Создают и выполняют новый процесс с использованием переменной PATH и указанного списка аргументов

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_spawnlpe, _wspawnlpe

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

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_spawnv, _wspawnv

Создают и выполняют новый процесса с указанным массивом аргументов

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_spawnve, _wspawnve

Создают и выполняют новый процесс с указанным массивом аргументов и средой

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_spawnvp, _wspawnvp

Создают и выполняют новый процесс с использованием переменной PATH и указанного массива аргументов

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

_spawnvpe, _wspawnvpe

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

System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class

system, _wsystem

Выполняют команду операционной системы

System::Diagnostics::ProcessStartInfo Class, System::Diagnostics::Process Class

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

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

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

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

Функции

Используют переменную PATH, чтобы найти файл

Соглашение о передаче аргументов

Параметры среды

_execl, _spawnl

Нет

List

Наследуются у вызывающего процесса

_execle, _spawnle

Нет

List

Указатель на таблицу среды для нового процесса передается как последний аргумент

_execlp, _spawnlp

Да

List

Наследуются у вызывающего процесса

_execlpe, _spawnlpe

Да

List

Указатель на таблицу среды для нового процесса передается как последний аргумент

_execv, _spawnv

Нет

Массив

Наследуются у вызывающего процесса

_execve, _spawnve

Нет

Массив

Указатель на таблицу среды для нового процесса передается как последний аргумент

_execvp, _spawnvp

Да

Массив

Наследуются у вызывающего процесса

_execvpe, _spawnvpe

Да

Массив

Указатель на таблицу среды для нового процесса передается как последний аргумент

См. также

Ссылки

Процедуры среды выполнения по категориям