执行命令。
重要
此 API 不能用于在 Windows 运行时中执行的应用程序。 有关详细信息,请参阅通用 Windows 平台应用中不支持的 CRT 函数。
语法
int system(
const char *command
);
int _wsystem(
const wchar_t *command
);
参数
command
要执行的命令。
返回值
如果 command 为 NULL,并且找到命令解释器,则返回一个非零值。 如果未找到命令解释器,则返回 0 并将 errno 设置为 ENOENT。 如果 command 不为 NULL,则 system 将返回由命令解释器返回的值。 仅当命令解释器返回值 0 时,它才会返回值 0。 返回值 - 1 指示错误,并且 errno 设置为以下值之一:
| 值 | 说明 |
|---|---|
E2BIG |
自变量列表(与系统相关)太大。 |
ENOENT |
无法找到命令解释器。 |
ENOEXEC |
由于格式无效,无法执行命令解释器文件。 |
ENOMEM |
没有足够的内存可用于执行命令;或可用内存已损坏;或存在无效块,这表明调用进程未正确分配。 |
有关返回代码的详细信息,请参阅 errno、_doserrno、_sys_errlist 和 _sys_nerr。
备注
system 函数将 command 传递给命令解释器,该解释器将字符串作为操作系统命令运行。 system 使用 COMSPEC 和 PATH 环境变量来定位命令解释器文件 CMD.exe。 如果 command 为 NULL,则该函数只检查命令解释器是否存在。
在调用 system 函数之前,你必须使用 fflush 或 _flushall 进行显式刷新或关闭任何流。
_wsystem 是 system的宽字符版本; command 的 _wsystem 参数是宽字符字符串。 否则这些函数具有相同行为。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
一般文本例程映射
TCHAR.H 例程 |
_UNICODE 和 _MBCS 未定义 |
_MBCS 已定义 |
_UNICODE 已定义 |
|---|---|---|---|
_tsystem |
system |
system |
_wsystem |
要求
| 例程 | 必需的标头 |
|---|---|
system |
<process.h> 或 <stdlib.h> |
_wsystem |
<process.h> 或 <stdlib.h> 或 <wchar.h> |
有关兼容性的详细信息,请参阅 兼容性。
示例
此示例使用 system 来键入一个文本文件。
// crt_system.c
#include <process.h>
int main( void )
{
system( "type crt_system.txt" );
}
输入:crt_system.txt
Line one.
Line two.
输出
Line one.
Line two.