进程和环境控制

使用进程控制例程启动、停止和管理程序内的进程。 使用环境控制例程获取和更改与操作系统环境有关的信息。

进程和环境控制函数

例程 使用
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, _wgetenvgetenv_s, _wgetenv_s 获取环境变量的值
_getpid 获取进程 ID 号
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 等待其进程 ID 为已知的任何其他进程。

_exec_spawn 系列间的差异是:_spawn 函数可以将新进程中的控制权返回到调用进程。 在 _spawn 函数中,除非已指定 _P_OVERLAY,否则调用进程以及新进程都存在于内存中。 在 _exec 函数中,新进程将覆盖调用进程,因此除非在尝试启动新进程的执行中发生错误,否则控制权不能返回到调用进程。

如下表所示,_exec 系列中函数间的差异以及 _spawn 系列中函数间的差异涉及以下方面:查找要作为新进程执行的文件的方法、参数传递到新进程的形式和设置环境的方法。 如果参数的数目为常数或在编译时已知,请使用传递参数列表的函数。 如果参数的数目需要在运行时确定,请使用将指针传递到包含参数的数组中的函数。 下表中的信息还适用于 _spawn_exec 函数的宽字符对应项。

_spawn 和 _exec 函数系列

函数 使用 PATH 变量查找文件 参数传递约定 环境设置
_execl, _spawnl No 列表 继承自调用进程
_execle, _spawnle No 列表 指向作为最后一个参数传递的新进程的环境表
_execlp, _spawnlp 列表 继承自调用进程
_execlpe, _spawnlpe 列表 指向作为最后一个参数传递的新进程的环境表
_execv, _spawnv No 数组 继承自调用进程
_execve, _spawnve No 数组 指向作为最后一个参数传递的新进程的环境表
_execvp, _spawnvp 数组 继承自调用进程
_execvpe, _spawnvpe 数组 指向作为最后一个参数传递的新进程的环境表

另请参阅

按类别分的运行时例程