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)前目錄的名稱或?qū)⑵涓摹?br />CHCP?????顯示或設(shè)置活動(dòng)代碼頁(yè)數(shù)。
CHDIR????顯示當(dāng)前目錄的名稱或?qū)⑵涓摹?br />CHKDSK???檢查磁盤并顯示狀態(tài)報(bào)告。
CHKNTFS?顯示或修改啟動(dòng)時(shí)間磁盤檢查。
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è)軟盤的內(nèi)容。
DISKCOPY?將一個(gè)軟盤的內(nèi)容復(fù)制到另一個(gè)軟盤。
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???格式化磁盤,以便跟?Windows?使用。
FTYPE????顯示或修改用于文件擴(kuò)展名關(guān)聯(lián)的文件類型。
GOTO?????將?Windows?命令解釋程序指向批處理程序中某個(gè)標(biāo)明的行。
GRAFTABL?啟用?Windows?來(lái)以圖像模式顯示擴(kuò)展字符集。
HELP?????提供?Windows?命令的幫助信息。
IF???????執(zhí)行批處理程序中的條件性處理。
LABEL????創(chuàng)建、更改或刪除磁盤的卷標(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)題的磁盤恢復(fù)可讀信息。
REM??????記錄批文件或?CONFIG.SYS?中的注釋。
REN??????重命名文件。
RENAME???重命名文件。
REPLACE?替換文件。
RMDIR????刪除目錄。
SET??????顯示、設(shè)置或刪除?Windows?環(huán)境變量。
SETLOCAL?開(kāi)始批文件中環(huán)境更改的本地化。
SHIFT????更換批文件中可替換參數(shù)的位置。
SORT?????對(duì)輸入進(jìn)行分類。
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ì)話的窗口標(biāo)題。
TREE?????以圖形模式顯示驅(qū)動(dòng)器或路徑的目錄結(jié)構(gòu)。
TYPE?????顯示文本文件的內(nèi)容。
VER??????顯示?Windows?版本。
VERIFY???告訴?Windows?是否驗(yàn)證文件是否已正確寫入磁盤。
VOL??????顯示磁盤卷標(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.注銷計(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ō)明在編寫具有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跨境电商开店高频问题解答