C语言 system函数
Windows函數(shù)
windows操作系統(tǒng)下system () 函數(shù)詳解(主要是在C語(yǔ)言中的應(yīng)用) 函數(shù)名: system功 能: 發(fā)出一個(gè)DOS命令用 法: int system(char *command);system函數(shù)已經(jīng)被收錄在標(biāo)準(zhǔn)c庫(kù)中,可以直接調(diào)用程序例:#include <stdlib.h>#include <stdio.h>int main(void){printf("About to spawn and run a DOS command\n");system("dir");return 0;}又如:system("pause")可以實(shí)現(xiàn)凍結(jié)屏幕,便于觀察程序的執(zhí)行結(jié)果;system("CLS")可以實(shí)現(xiàn)清屏操作。而調(diào)用color函數(shù)可以改變控制臺(tái)的前景色和背景,具體參數(shù)在下面說(shuō)明。例如,用 system("color 0A"); 其中color后面的0是背景色代號(hào),A是前景色代號(hào)。各顏色代碼如下:0=黑色 1=藍(lán)色 2=綠色 3=湖藍(lán)色 4=紅色 5=紫色 6=黃色 7=白色 8=灰色 9=淡藍(lán)色 A=淡綠色 B=淡淺綠色 C=淡紅色 D=淡紫色 E=淡黃色 F=亮白色ASSOC????顯示或修改文件擴(kuò)展名關(guān)聯(lián)。AT???????計(jì)劃在計(jì)算機(jī)上運(yùn)行的命令和程序。
ATTRIB???顯示或更改文件屬性。
BREAK????設(shè)置或清除擴(kuò)展式?CTRL+C?檢查。
CACLS????顯示或修改文件的訪問(wèn)控制列表(ACLs)。
CALL?????從另一個(gè)批處理程序調(diào)用這一個(gè)。
CD???????顯示當(dāng)前目錄的名稱(chēng)或?qū)⑵涓摹?br />CHCP?????顯示或設(shè)置活動(dòng)代碼頁(yè)數(shù)。
CHDIR????顯示當(dāng)前目錄的名稱(chēng)或?qū)⑵涓摹?br />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)前景和背景顏色。
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è)置日期。
DEL??????刪除至少一個(gè)文件。
DIR??????顯示一個(gè)目錄中的文件和子目錄。
DISKCOMP?比較兩個(gè)軟盤(pán)的內(nèi)容。
DISKCOPY?將一個(gè)軟盤(pán)的內(nèi)容復(fù)制到另一個(gè)軟盤(pán)。
DOSKEY???編輯命令行、調(diào)用?Windows?命令并創(chuàng)建宏。
ECHO?????顯示消息,或?qū)⒚罨仫@打開(kāi)或關(guān)上。
ENDLOCAL?結(jié)束批文件中環(huán)境更改的本地化。
ERASE????刪除至少一個(gè)文件。
EXIT?????退出?CMD.EXE?程序(命令解釋程序)。
FC???????比較兩個(gè)或兩套文件,并顯示不同處。
FIND?????在文件中搜索文字字符串。
FINDSTR?在文件中搜索字符串。
FOR??????為一套文件中的每個(gè)文件運(yùn)行一個(gè)指定的命令
FORMAT???格式化磁盤(pán),以便跟?Windows?使用。
FTYPE????顯示或修改用于文件擴(kuò)展名關(guān)聯(lián)的文件類(lèi)型。
GOTO?????將?Windows?命令解釋程序指向批處理程序中某個(gè)標(biāo)明的行。
GRAFTABL?啟用?Windows?來(lái)以圖像模式顯示擴(kuò)展字符集。
HELP?????提供?Windows?命令的幫助信息。
IF???????執(zhí)行批處理程序中的條件性處理。
LABEL????創(chuàng)建、更改或刪除磁盤(pán)的卷標(biāo)。
MD???????創(chuàng)建目錄。
MKDIR????創(chuàng)建目錄。
MODE?????配置系統(tǒng)設(shè)備。
MORE?????一次顯示一個(gè)結(jié)果屏幕。
MOVE?????將文件從一個(gè)目錄移到另一個(gè)目錄。
PATH?????顯示或設(shè)置可執(zhí)行文件的搜索路徑。
PAUSE????暫停批文件的處理并顯示消息。
POPD?????還原?PUSHD?保存的當(dāng)前目錄的上一個(gè)值。
PRINT????打印文本文件。
PROMPT???更改?Windows?命令提示符。
PUSHD????保存當(dāng)前目錄,然后對(duì)其進(jìn)行更改。
RD???????刪除目錄。
RECOVER?從有問(wèn)題的磁盤(pán)恢復(fù)可讀信息。
REM??????記錄批文件或?CONFIG.SYS?中的注釋。
REN??????重命名文件。
RENAME???重命名文件。
REPLACE?替換文件。
RMDIR????刪除目錄。
SET??????顯示、設(shè)置或刪除?Windows?環(huán)境變量。
SETLOCAL?開(kāi)始批文件中環(huán)境更改的本地化。
SHIFT????更換批文件中可替換參數(shù)的位置。
SORT?????對(duì)輸入進(jìn)行分類(lèi)。
START????啟動(dòng)另一個(gè)窗口來(lái)運(yùn)行指定的程序或命令。
SUBST????將路徑跟一個(gè)驅(qū)動(dòng)器號(hào)關(guān)聯(lián)。
TIME?????顯示或設(shè)置系統(tǒng)時(shí)間。
TITLE????設(shè)置?CMD.EXE?會(huì)話(huà)的窗口標(biāo)題。
TREE?????以圖形模式顯示驅(qū)動(dòng)器或路徑的目錄結(jié)構(gòu)。
TYPE?????顯示文本文件的內(nèi)容。
VER??????顯示?Windows?版本。
VERIFY???告訴?Windows?是否驗(yàn)證文件是否已正確寫(xiě)入磁盤(pán)。
VOL??????顯示磁盤(pán)卷標(biāo)和序列號(hào)。
XCOPY????復(fù)制文件和目錄樹(shù)。
(注意:Microsoft Visual C++6.0 支持system)舉例看了下面實(shí)例,相信你會(huì)對(duì)學(xué)到更多system在C程序設(shè)計(jì)中的應(yīng)用。例一:C語(yǔ)言調(diào)用DOS命令實(shí)現(xiàn)定時(shí)關(guān)機(jī):#include<stdio.h>#include<string.h>#include<stdlib.h>int print(){printf(" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪╪\n");printf("╔═══╧╧C語(yǔ)言關(guān)機(jī)程序 ╧╧═══╗\n");printf("║※1.實(shí)現(xiàn)10分鐘內(nèi)的定時(shí)關(guān)閉計(jì)算機(jī) ║\n");printf("║※2.立即關(guān)閉計(jì)算機(jī) ║\n");printf("║※3.注銷(xiāo)計(jì)算機(jī) ║\n");printf("║※0.退出系統(tǒng) ║\n");printf("╚═══════════════════╝\n");return 0;}void main(){system("title C語(yǔ)言關(guān)機(jī)程序");//設(shè)置cmd窗口標(biāo)題system("mode con cols=48 lines=25");//窗口寬度高度system("color 0B");system("date /T");system("TIME /T");char cmd[20]="shutdown -s -t ";char t[5]="0";print();int c;scanf("%d",&c);getchar();switch(c){case 1:printf("您想在多少秒后自動(dòng)關(guān)閉計(jì)算機(jī)?(0~600)\n");scanf("%s",t);system(strcat(cmd,t));break;case 2:system("shutdown -p");break;case 3:system("shutdown -l");break;case 0:break;default:printf("Error!\n");}system("pause");exit(0);}例二:用C語(yǔ)言刪除文件,例如文件的位置是d:\123.txt用system()函數(shù)執(zhí)行windows命令。#include <stdlib.h>#include <stdio.h>int main(void){system("del d:\123.txt");return 0;}
Linux/Unix函數(shù)
函數(shù)詳解(執(zhí)行shell 命令)相關(guān)函數(shù)fork,execve,waitpid,popen表頭文件#include<stdlib.h>定義函數(shù)int system(const char * string);函數(shù)說(shuō)明system()會(huì)調(diào)用fork()產(chǎn)生子進(jìn)程,由子進(jìn)程來(lái)調(diào)用/bin/sh-c string來(lái)執(zhí)行參數(shù)string字符串所代表的命令,此命令執(zhí)行完后隨即返回原調(diào)用的進(jìn)程。在調(diào)用system()期間SIGCHLD 信號(hào)會(huì)被暫時(shí)擱置,SIGINT和SIGQUIT 信號(hào)則會(huì)被忽略。返回值如果fork()失敗 返回-1:出現(xiàn)錯(cuò)誤如果exec()失敗,表示不能執(zhí)行Shell,返回值相當(dāng)于Shell執(zhí)行了exit(127)如果執(zhí)行成功則返回子Shell的終止?fàn)顟B(tài)如果system()在調(diào)用/bin/sh時(shí)失敗則返回127,其他失敗原因返回-1。若參數(shù)string為空指針(NULL),則返回非零值>;。如果system()調(diào)用成功則最后會(huì)返回執(zhí)行shell命令后的返回值,但是此返回值也有可能為 system()調(diào)用/bin/sh失敗所返回的127,因此最好能再檢查errno 來(lái)確認(rèn)執(zhí)行成功。附加說(shuō)明在編寫(xiě)具有SUID/SGID權(quán)限的程序時(shí)請(qǐng)勿使用system(),system()會(huì)繼承環(huán)境變量,通過(guò)環(huán)境變量可能會(huì)造成系統(tǒng)安全的問(wèn)題。范例#i nclude<stdlib.h>main(){system(“l(fā)s -al /etc/passwd /etc/shadow”);}執(zhí)行結(jié)果:-rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd-r--------- 1 root root 572 Sep 2 15 :34 /etc/shado例2:char tmp[];sprintf(tmp,"/bin/mount -t vfat %s /mnt/usb",dev);system(tmp);其中dev是/dev/sda1.與exec的區(qū)別1、system()和exec()都可以執(zhí)行進(jìn)程外的命令,system是在原進(jìn)程上開(kāi)辟了一個(gè)新的進(jìn)程,但是exec是用新進(jìn)程(命令)覆蓋了原有的進(jìn)程2、system()和exec()都有能產(chǎn)生返回值,system的返回值并不影響原有進(jìn)程,但是exec的返回值影響了原進(jìn)程具體例:效果如下:int main(){?system("mode con cols=50 lines=25");//窗口寬度高度?//indicate ten number,black background?for(int i=0;i<10;i++)??printf("第%2d個(gè)數(shù)字是:%d\n",i+1,i);?//system pause untill some key was pressed?system("pause");?//console clear the screen?system("cls");?//console font color be change 02,BLUE?system("COLOR 02");??for(int j=0;j<10;j++)??printf("第%d個(gè)符號(hào)是:%c\n",j+1,(char)(63+j));?system("pause");?//?system("VOL");?system("pause");?return 0;}???????????
再分享一下我老師大神的人工智能教程吧。零基礎(chǔ)!通俗易懂!風(fēng)趣幽默!還帶黃段子!希望你也加入到我們?nèi)斯ぶ悄艿年?duì)伍中來(lái)!https://blog.csdn.net/jiangjunshow
總結(jié)
以上是生活随笔為你收集整理的C语言 system函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c盘users的用户名怎么改_怎么修改i
- 下一篇: Shopee跨境电商开店高频问题解答