进程和环境控制
使用进程控制程序启动,停止和管理程序内部的进程。 使用环境控件程序获取和更改有关操作系统环境的信息。
进程和环境控制函数
例程 |
使用 |
.NET Framework 等效项 |
---|---|---|
终止进程没有刷新缓冲区或调用被 atexit 和 _onexit注册的函数 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
逻辑错误的测试 |
||
与 assert类似,但是只在运行库的调试版本中可用 |
||
在程序结束执行的计划程序。 |
||
在 Windows 操作系统进程上创建新线程 |
||
执行 exit 终止程序 (例如刷新缓冲区),然后返回控件去调用程序,没有终止进程。 |
||
执行 _exit 终止程序,然后在没有结束进程的情况下返回控件去给调用程序。 |
||
等待直到另一个进程停止。 |
||
终止Windows 操作系统线程 |
不适用。 若要调用标准 C 函数,请使用 PInvoke。 有关更多信息,请参见平台调用示例。 |
|
利用自变量列表执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
以自变量列表和给定环境执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
使用 PATH 变量和参数列表,执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
使用 PATH 变量,给定的环境和参数列表执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
利用自变量数组执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
以自变量数组和给定环境执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
使用 PATH 变量和参数数组,执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
使用 PATH 变量,给定的环境和参数数组执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
调用由 atexit 和 _onexit 注册的函数,刷新所有缓冲区,请关闭所有开启文件,并且终止进程 |
||
立即终止进程,不调用 atexit 或 _onexit 或刷新缓冲区 |
||
获取环境变量的值 |
||
获得进程 ID 号 |
||
还原堆栈保存环境;使用它来执行非本地 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 类,System::Diagnostics::ProcessStartInfo 类 |
|
用指定的参数列表和环境创建并执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
使用 PATH 变量和指定的参数列表,创建并执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
使用 PATH 变量,指定的环境和参数列表,创建并执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
用指定的参数数组创建并执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
用指定的参数数组和环境创建并执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
使用 PATH 变量和指定的参数数组,创建并执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
使用 PATH 变量,指定的环境和参数数组,创建并执行新的进程 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
|
执行操作系统命令 |
System::Diagnostics::Process 类,System::Diagnostics::ProcessStartInfo 类 |
在 Windows 操作系统中,已经产生的进程与正在产生的进程等效。 所有进程可以使用_cwait 等待已知进程ID的任何其他进程。
_exec 和与_spawn 系列之间的差别在于 _spawn 函数可以从新的进程返回控件去调用进程。 在 _spawn 函数中,除非 _P_OVERLAY 指定,则调用进程和新的进程都存在内存中。 在 _exec 函数中,新的进程覆盖调用的进程,因此,控件不能返回到调用进程,除非错误发在尝试启动执行新的进程。
区别在 _exec 系列中的函数,以及那些在 _spawn 系列中,涉及定位文件的方法作为新的进程被执行,窗体中的参数传递给新的进程,设置环境的方法如下表所示。 使用传递参数列表的函数,当参数的数目是常量或在编译时已知时。 使用传递指向包含参数数组的一个函数,当参数的数目在运行是被确定。 下表中的信息也适用于 _spawn 和 _exec 函数的宽字符副本。
_spawn 和_exec 函数族
函数 |
使用路径变量查找文件 |
参数传递约定 |
环境设置 |
---|---|---|---|
_execl, _spawnl |
否 |
List |
从调用进程中继承 |
_execle, _spawnle |
否 |
List |
新进程指向环境表格的指针作为最后的参数传递 |
_execlp, _spawnlp |
是 |
List |
从调用进程中继承 |
_execlpe, _spawnlpe |
是 |
List |
新进程指向环境表格的指针作为最后的参数传递 |
_execv, _spawnv |
否 |
数组 |
从调用进程中继承 |
_execve, _spawnve |
否 |
数组 |
新进程指向环境表格的指针作为最后的参数传递 |
_execvp, _spawnvp |
是 |
数组 |
从调用进程中继承 |
_execvpe, _spawnvpe |
是 |
数组 |
新进程指向环境表格的指针作为最后的参数传递 |