Управление процессами и средой
Используйте процедуры управления процессами для запуска, остановки и управления процессами из программы. Используйте процедуры управления средой выполнения, чтобы получать и изменять сведения о среде операционной системы.
Функции управления процессами и средой
Подпрограмма |
Применение |
Эквивалент в .NET Framework |
---|---|---|
Прерывает процесс без сбрасывания буферов или вызова функций, зарегистрированных atexit и _onexit |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Тест на логическую ошибку |
||
Макросы _ASSERT, _ASSERTE |
Аналогичны assert, но доступны только в версиях отладки библиотек времени выполнения |
|
Поставить в очередь процедуры для выполнения при завершении работы программы |
||
Создают новый поток в процессе операционной системы Windows |
||
Выполняет процедуры завершения exit (например, сброс буферов), а затем возвращает управление вызывающей программе без завершения процесса |
||
Выполняет процедуры завершения _exit, а затем возвращает управление вызывающей программе без завершения процесса |
||
Ожидает завершение другого процесса |
||
Завершают поток операционной системы Windows |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Выполнят новый процесс со списком аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Выполняют новый процесс со списком аргументов и указанной средой |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Выполняют новый процесс с использованием переменной PATH и списка аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Выполняют новый процесс с использованием переменной PATH, указанной среды и списка аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Выполнят новый процесс с массивом аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Выполняют новый процесс с массивом аргументов и указанной средой |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Выполняют новый процесс с использованием переменной PATH и массива аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Выполняют новый процесс с использованием переменной PATH, указанной среды и массива аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Вызывает функции, зарегистрированные atexit и _onexit, сбрасывает все буферы, закрывает все открытые файлы и завершает процесс |
||
Завершает процесс немедленно без вызова atexit или _onexit или сбрасывания буферов |
||
Получение значения переменной среды |
||
Получает идентификатор процесса |
||
Восстанавливает сохраненную среду стека; используйте для выполнения дальнего goto |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Планирует процедуры для выполнения при завершении работы программы; используйте для совместимости с версией Microsoft C/C++ 7.0 и более ранними |
||
Ожидает новый обработчик команд и закрывает поток связанного канала |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Печатают сообщение об ошибке. |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Создает канал для чтения и записи. |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Создают канал и выполняют команду |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Добавляют или изменяют значение переменной среды |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Отправляет сигнал вызывающему процессу |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Сохраняет среду стека; используйте для выполнения дальнего goto |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Обрабатывает сигнал прерывания |
Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода. |
|
Создают и выполняют новый процесса с указанным списком аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Создают и выполняют новый процесс с указанным списком аргументов и средой |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Создают и выполняют новый процесс с использованием переменной PATH и указанного списка аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Создают и выполняют новый процесс с использованием переменной PATH, указанной среды и указанного списка аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Создают и выполняют новый процесса с указанным массивом аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Создают и выполняют новый процесс с указанным массивом аргументов и средой |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Создают и выполняют новый процесс с использованием переменной PATH и указанного массива аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Создают и выполняют новый процесс с использованием переменной PATH, указанной среды и указанного массива аргументов |
System::Diagnostics::Process Class, System::Diagnostics::ProcessStartInfo Class |
|
Выполняют команду операционной системы |
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 |
Да |
Массив |
Указатель на таблицу среды для нового процесса передается как последний аргумент |