函數(shù)接口
1
2
3
4
5
|
_DCRTIMP int __cdecl system ( _In_opt_z_ char const * _Command ); |
system函數(shù)已經(jīng)被收錄在標(biāo)準(zhǔn)c庫(kù)中,頭文件為<stdlib.h>
作用
執(zhí)行系統(tǒng)命令調(diào)用命令處理器來(lái)執(zhí)行命令。
如果命令是空指針,則該函數(shù)只檢查是否有命令處理器可以被此函數(shù)使用。
命令非空則調(diào)用命令的效果取決于系統(tǒng)和庫(kù)的實(shí)現(xiàn),并可能導(dǎo)致程序以非標(biāo)準(zhǔn)的方式運(yùn)行或終止。
補(bǔ)充:
執(zhí)行 dos(windows系統(tǒng)) 或 shell(Linux/Unix系統(tǒng)) 命令,參數(shù)字符串command為命令名。另,在windows系統(tǒng)下參數(shù)字符串不區(qū)分大小寫(xiě)。
說(shuō)明:在windows系統(tǒng)中,system函數(shù)直接在控制臺(tái)調(diào)用一個(gè)command命令。 在Linux/Unix系統(tǒng)中,system函數(shù)會(huì)調(diào)用fork函數(shù)產(chǎn)生子進(jìn)程,由子進(jìn)程來(lái)執(zhí)行command命令,命令執(zhí)行完后隨即返回原調(diào)用的進(jìn)程
返回值
如果命令為空指針,如果命令處理器是可用的則該函數(shù)將返回一個(gè)非零值,如果不可用,則為零。
如果命令不是NULL指針,返回的值取決于系統(tǒng)和庫(kù)的實(shí)現(xiàn),但如果支持的話,通常期望它是被調(diào)用的命令返回的狀態(tài)代碼,通常是命令執(zhí)行成功返回0,執(zhí)行失敗返回-1。
測(cè)試代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
/* system example : DIR */ #include <stdio.h> /* printf */ #include <stdlib.h> /* system, NULL, EXIT_FAILURE */ int main() { int i; printf ( "Checking if processor is 可用的...?" ); if ( system (NULL)) puts ( "Ok" ); else exit (EXIT_FAILURE); printf ( "Executing command DIR...\n" ); i = system ( "dir" ); printf ( "The value returned was: %d.\n" , i); return 0; } |
參數(shù)
參數(shù) | 功能 | 使用說(shuō)明 |
---|---|---|
ASSOC | 顯示或修改文件擴(kuò)展名關(guān)聯(lián) | |
ATTRIB | 顯示或更改文件屬性 | |
BREAK | 設(shè)置或清除擴(kuò)展式 CTRL+C 檢查 | |
BCDEDIT | 設(shè)置啟動(dòng)數(shù)據(jù)庫(kù)中的屬性以控制啟動(dòng)加載 | |
CACLS | 顯示或修改文件的訪問(wèn)控制列表(ACL) | |
CALL | 從另一個(gè)批處理程序調(diào)用這一個(gè) | |
CD | 顯示當(dāng)前目錄的名稱或?qū)⑵涓?/td> | |
CHCP | 顯示或設(shè)置活動(dòng)代碼頁(yè)數(shù) | |
CHDIR | 顯示當(dāng)前目錄的名稱或?qū)⑵涓?/td> | |
CHKDSK | 檢查磁盤(pán)并顯示狀態(tài)報(bào)告 | |
CHKNTFS | 顯示或修改啟動(dòng)時(shí)間磁盤(pán)檢查 | |
CLS | 清除屏幕 | * |
CMD | 打開(kāi)另一個(gè) Windows 命令解釋程序窗口 | * |
COLOR | 設(shè)置默認(rèn)控制臺(tái)前景和背景顏色 | system("color 0B"); |
COMP | 比較兩個(gè)或兩套文件的內(nèi)容 | |
COMPACT | 顯示或更改 NTFS 分區(qū)上文件的壓縮 | |
CONVERT | 將 FAT 卷轉(zhuǎn)換成 NTFS 你不能轉(zhuǎn)換當(dāng)前驅(qū)動(dòng)器 | |
COPY | 將至少一個(gè)文件復(fù)制到另一個(gè)位置 | |
DATE | 顯示或設(shè)置日期 |
system("date /T"); 后面加 /t 表示顯示日期 |
DEL | 刪除至少一個(gè)文件 | |
DIR | 顯示一個(gè)目錄中的文件和子目錄 | |
DISKPART | 顯示或配置磁盤(pán)分區(qū)屬性 | |
DOSKEY | 編輯命令行、撤回 Windows 命令并創(chuàng)建宏 | |
DRIVERQUERY | 顯示當(dāng)前設(shè)備驅(qū)動(dòng)程序狀態(tài)和屬性 | |
ECHO | 顯示消息,或?qū)⒚罨仫@打開(kāi)或關(guān)閉 | |
ENDLOCAL | 結(jié)束批文件中環(huán)境更改的本地化 | |
ERASE | 刪除一個(gè)或多個(gè)文件 | * |
EXIT | 退出 CMD.EXE 程序(命令解釋程序) | * |
FC | 比較兩個(gè)文件或兩個(gè)文件集并顯示它們之間的不同 | * |
FIND | 在一個(gè)或多個(gè)文件中搜索一個(gè)文本字符串 | * |
FINDSTR | 在多個(gè)文件中搜索字符串 | * |
FOR | 為一組文件中的每個(gè)文件運(yùn)行一個(gè)指定的命令 | |
FORMAT | 格式化磁盤(pán),以便用于 Windows | |
FSUTIL | 顯示或配置文件系統(tǒng)屬性 | |
FTYPE | 顯示或修改在文件擴(kuò)展名關(guān)聯(lián)中使用的文件類型 | |
GOTO | 將 Windows 命令解釋程序定向到批處理程序中某個(gè)帶標(biāo)簽的行 | |
GPRESULT | 顯示計(jì)算機(jī)或用戶的組策略信息 | |
GRAFTABL | 使 Windows 在圖形模式下顯示擴(kuò)展字符集 | * |
HELP | 獲取該表格的內(nèi)容 | |
ICACLS | 顯示、修改、備份或還原文件和目錄的 ACL | |
IF | 在批處理程序中執(zhí)行有條件的處理操作 | |
LABEL | 創(chuàng)建、更改或刪除磁盤(pán)的卷標(biāo) | |
MD | 創(chuàng)建一個(gè)目錄 | |
MKDIR | 創(chuàng)建一個(gè)目錄 | |
MKLINK | 創(chuàng)建符號(hào)鏈接和硬鏈接 | |
MODE | 查看與配置系統(tǒng)設(shè)備 | system(mode); |
MORE | 逐屏顯示輸出 | * |
MOVE | 將一個(gè)或多個(gè)文件從一個(gè)目錄移動(dòng)到另一個(gè)目錄 | |
OPENFILES | 顯示遠(yuǎn)程用戶為了文件共享而打開(kāi)的文件 | |
PATH為 | 可執(zhí)行文件顯示或設(shè)置搜索路徑 | |
PAUSE | 暫停批處理文件的處理并顯示消息 | |
POPD | 還原通過(guò) PUSHD 保存的當(dāng)前目錄的上一個(gè)值 | |
打印一個(gè)文本文件 | ||
PROMPT | 更改 Windows 命令提示 | |
PUSHD | 保存當(dāng)前目錄,然后對(duì)其進(jìn)行更改 | |
RD | 刪除目錄 | |
RECOVER | 從損壞的或有缺陷的磁盤(pán)中恢復(fù)可讀信息 | * |
REM | 記錄批處理文件或 CONFIG.SYS 中的注釋(批注) | |
REN | 重命名文件 | |
RENAME | 重命名文件 | |
REPLACE | 替換文件 | * |
RMDIR | 刪除目錄 | |
ROBOCOPY | 復(fù)制文件和目錄樹(shù)的高級(jí)實(shí)用工具 | |
SET | 顯示、設(shè)置或刪除 Windows 環(huán)境變量 | |
SETLOCAL | 開(kāi)始本地化批處理文件中的環(huán)境更改 | |
SC | 顯示或配置服務(wù)(后臺(tái)進(jìn)程) | |
SCHTASKS | 安排在一臺(tái)計(jì)算機(jī)上運(yùn)行命令和程序 | |
SHIFT | 調(diào)整批處理文件中可替換參數(shù)的位置 | |
SHUTDOWN | 允許通過(guò)本地或遠(yuǎn)程方式正確關(guān)閉計(jì)算機(jī) |
system(“shutdown -s –t 60”)60秒后關(guān)機(jī) system("shutdown -a");取消關(guān)機(jī) system("shutdown -p");立即關(guān)閉 system("shutdown -1");注銷計(jì)算機(jī) |
SORT | 對(duì)輸入排序 | |
START | 啟動(dòng)單獨(dú)的窗口以運(yùn)行指定的程序或命令 | |
SUBST | 將路徑與驅(qū)動(dòng)器號(hào)關(guān)聯(lián) | |
SYSTEMINFO | 顯示計(jì)算機(jī)的特定屬性和配置 | |
TASKLIST | 顯示包括服務(wù)在內(nèi)的所有當(dāng)前運(yùn)行的任務(wù) | |
TASKKILL | 中止或停止正在運(yùn)行的進(jìn)程或應(yīng)用程序 | |
TIME | 顯示或設(shè)置系統(tǒng)時(shí)間 |
system("date /T"); 后面加 /t 表示顯示日期 |
TITLE | 設(shè)置 CMD.EXE 會(huì)話的窗口標(biāo)題 | “TITLE 你想改成啥” |
TREE | 以圖形方式顯示驅(qū)動(dòng)程序或路徑的目錄結(jié)構(gòu) | “TREE D:” |
TYPE | 顯示文本文件的內(nèi)容 | “TYPE D:\\文本.txt” |
VER | 顯示 Windows 的版本 | |
VERIFY | 告訴 Windows 是否進(jìn)行驗(yàn)證,以確保文件正確寫(xiě)入磁盤(pán) | |
VOL | 顯示磁盤(pán)卷標(biāo)和序列號(hào) | |
XCOPY | 復(fù)制文件和目錄樹(shù) | |
WMIC | 在交互式命令 shell 中顯示 WMI 信息 |
MODE命令
system(mode);
(936表示簡(jiǎn)體中文)
應(yīng)用示例
示例一:
改變DOS窗口的尺寸:
打開(kāi)命令提示符cmd,鍵入mode con cols=100 lines=40
則DOS窗口的尺寸將會(huì)變?yōu)?0行100列的,cols最小值為13,lines最小值為1。在C語(yǔ)言中也可以通過(guò)system函數(shù)調(diào)用這個(gè)dos命令來(lái)實(shí)現(xiàn)這個(gè)功能。
示例二:
顯示代碼頁(yè):
代碼頁(yè),通俗的說(shuō)就是DOS中顯示的語(yǔ)言。具體代碼頁(yè)可以查看代碼頁(yè)這個(gè)百科詞條。
比如,想讓DOS下顯示的語(yǔ)言為美式英語(yǔ),則輸入mode con cp select=437
即可,輸出為:
color命令
system("color 02
"); 是表示黑背景、綠色前景
(即字的顏色).顏色屬性由兩個(gè)十六進(jìn)制數(shù)字指定 -- 第一個(gè)為背景
,第二個(gè)則為前景
。每個(gè)數(shù)字可以為以下任何值之一
0 = 黑色 8 = 灰色
1 = 藍(lán)色 9 = 淡藍(lán)色
2 = 綠色 A = 淡綠色
3 = 湖藍(lán)色 B = 淡淺綠色
4 = 紅色 C = 淡紅色
5 = 紫色 D = 淡紫色
6 = 黃色 E = 淡黃色
7 = 白色 F = 亮白色
0 = black 8 = gray
1 = blue 9 = light blue
2 = green A = light green
3 = lake blue B = light green
4 = red C = light red
5 = purple D = lavender
6 = yellow E = light yellow
7 = white F = bright white
注意:一個(gè)程序中永遠(yuǎn)是最后一個(gè)system(“color xx”)
起作用
到此這篇關(guān)于C語(yǔ)言system函數(shù)使用方法詳解的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/qq_42591783/article/details/121685822