執行命令。
重要
這個 API 不能用於在 Windows 執行階段中執行的應用程式。 如需詳細資訊,請參閱 CRT functions not supported in Universal Windows Platform apps (通用 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 設定為下列其中一個值:
| 值 | Description |
|---|---|
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.
另請參閱
進程和環境控制
_exec、_wexec 函式
exit、 、 _Exit_exit
_flushall
_spawn、_wspawn 函式