C語(yǔ)言system函數(shù)使用方法詳解
函數(shù)接口
_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)用命令處理器來執(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ū)分大小寫。
說明:在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)程來執(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è)試代碼
/* 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ù) | 功能 | 使用說明 |
|---|---|---|
| ASSOC | 顯示或修改文件擴(kuò)展名關(guān)聯(lián) | |
| ATTRIB | 顯示或更改文件屬性 | |
| BREAK | 設(shè)置或清除擴(kuò)展式 CTRL+C 檢查 | |
| BCDEDIT | 設(shè)置啟動(dòng)數(shù)據(jù)庫(kù)中的屬性以控制啟動(dòng)加載 | |
| CACLS | 顯示或修改文件的訪問控制列表(ACL) | |
| CALL | 從另一個(gè)批處理程序調(diào)用這一個(gè) | |
| CD | 顯示當(dāng)前目錄的名稱或?qū)⑵涓?/td> | |
| CHCP | 顯示或設(shè)置活動(dòng)代碼頁(yè)數(shù) | |
| CHDIR | 顯示當(dāng)前目錄的名稱或?qū)⑵涓?/td> | |
| CHKDSK | 檢查磁盤并顯示狀態(tài)報(bào)告 | |
| CHKNTFS | 顯示或修改啟動(dòng)時(shí)間磁盤檢查 | |
| CLS | 清除屏幕 | * |
| CMD | 打開另一個(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 | 顯示或配置磁盤分區(qū)屬性 | |
| DOSKEY | 編輯命令行、撤回 Windows 命令并創(chuàng)建宏 | |
| DRIVERQUERY | 顯示當(dāng)前設(shè)備驅(qū)動(dòng)程序狀態(tài)和屬性 | |
| ECHO | 顯示消息,或?qū)⒚罨仫@打開或關(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 | 格式化磁盤,以便用于 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)建、更改或刪除磁盤的卷標(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)程用戶為了文件共享而打開的文件 | |
| PATH為 | 可執(zhí)行文件顯示或設(shè)置搜索路徑 | |
| PAUSE | 暫停批處理文件的處理并顯示消息 | |
| POPD | 還原通過 PUSHD 保存的當(dāng)前目錄的上一個(gè)值 | |
| 打印一個(gè)文本文件 | ||
| PROMPT | 更改 Windows 命令提示 | |
| PUSHD | 保存當(dāng)前目錄,然后對(duì)其進(jìn)行更改 | |
| RD | 刪除目錄 | |
| RECOVER | 從損壞的或有缺陷的磁盤中恢復(fù)可讀信息 | * |
| REM | 記錄批處理文件或 CONFIG.SYS 中的注釋(批注) | |
| REN | 重命名文件 | |
| RENAME | 重命名文件 | |
| REPLACE | 替換文件 | * |
| RMDIR | 刪除目錄 | |
| ROBOCOPY | 復(fù)制文件和目錄樹的高級(jí)實(shí)用工具 | |
| SET | 顯示、設(shè)置或刪除 Windows 環(huán)境變量 | |
| SETLOCAL | 開始本地化批處理文件中的環(huán)境更改 | |
| SC | 顯示或配置服務(wù)(后臺(tái)進(jìn)程) | |
| SCHTASKS | 安排在一臺(tái)計(jì)算機(jī)上運(yùn)行命令和程序 | |
| SHIFT | 調(diào)整批處理文件中可替換參數(shù)的位置 | |
| SHUTDOWN | 允許通過本地或遠(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)證,以確保文件正確寫入磁盤 | |
| VOL | 顯示磁盤卷標(biāo)和序列號(hào) | |
| XCOPY | 復(fù)制文件和目錄樹 | |
| WMIC | 在交互式命令 shell 中顯示 WMI 信息 |
MODE命令
system(mode);

(936表示簡(jiǎn)體中文)
應(yīng)用示例
示例一:
改變DOS窗口的尺寸:
打開命令提示符cmd,鍵入mode con cols=100 lines=40則DOS窗口的尺寸將會(huì)變?yōu)?0行100列的,cols最小值為13,lines最小值為1。在C語(yǔ)言中也可以通過system函數(shù)調(diào)用這個(gè)dos命令來實(shí)現(xiàn)這個(gè)功能。
示例二:
顯示代碼頁(yè):
代碼頁(yè),通俗的說就是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í)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言中的狀態(tài)機(jī)設(shè)計(jì)深入講解
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言狀態(tài)機(jī)設(shè)計(jì)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Qt圖形圖像開發(fā)曲線圖表模塊QChart庫(kù)縮放/平移詳細(xì)方法與實(shí)例
這篇文章主要介紹了Qt圖形圖像開發(fā)曲線圖表模塊QChart庫(kù)縮放/平移詳細(xì)方法與實(shí)例,需要的朋友可以參考下2020-03-03
C/C++?Qt?運(yùn)用JSON解析庫(kù)的實(shí)例代碼
這篇文章主要介紹了C/C++?Qt?運(yùn)用JSON解析庫(kù)的相關(guān)知識(shí),通過代碼依次解析這個(gè)json文件中的每一個(gè)參數(shù),代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
養(yǎng)成良好的C++編程習(xí)慣之內(nèi)存管理的應(yīng)用詳解
"養(yǎng)成良好的編程習(xí)慣"其實(shí)是相當(dāng)綜合的一個(gè)命題,可以從多個(gè)角度、維度和層次進(jìn)行論述和評(píng)判,如代碼的風(fēng)格、效率和可讀性;模塊設(shè)計(jì)的靈活性、可擴(kuò)展性和耦合度等等,要試圖把所有方面都闡述清楚必須花很多的精力,而且也不一定能闡述得全面2013-05-05
C語(yǔ)言中實(shí)現(xiàn)“17進(jìn)制”轉(zhuǎn)“10進(jìn)制”實(shí)例代碼
這篇文章主要介紹了C語(yǔ)言中實(shí)現(xiàn)“17進(jìn)制”轉(zhuǎn)“10進(jìn)制”實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05
Qt實(shí)現(xiàn)數(shù)據(jù)進(jìn)行加密、解密的步驟
本文主要介紹了Qt實(shí)現(xiàn)數(shù)據(jù)進(jìn)行加密、解密的步驟,包含QCryptographicHash和Qt-AES兩種庫(kù)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03

