1. 程式人生 > >C語言 system函式

C語言 system函式

               

Windows函式

windows作業系統下system () 函式詳解(主要是在C語言中的應用) 函式名: system功 能: 發出一個DOS命令用 法: int system(char *command);system函式已經被收錄在標準c庫中,可以直接呼叫程式例:int main(void){printf("About to spawn and run a DOS command\n");system("dir");return 0;}又如:system("pause")可以實現凍結螢幕,便於觀察程式的執行結果;system("CLS")可以實現清屏操作。而呼叫color函式可以改變控制檯的前景色和背景,具體引數在下面說明。例如,用 system("color 0A"); 其中color後面的0是背景色代號,A是前景色代號。各顏色程式碼如下:0=黑色 1=藍色 2=綠色 3=湖藍色 4=紅色 5=紫色 6=黃色 7=白色 8=灰色 9=淡藍色 A=淡綠色 B=淡淺綠色 C=淡紅色 D=淡紫色 E=淡黃色 F=亮白色ASSOC   
顯示或修改副檔名關聯。

AT      計劃在計算機上執行的命令和程式。
ATTRIB  
顯示或更改檔案屬性。
BREAK   
設定或清除擴充套件式CTRL+C檢查。
CACLS   
顯示或修改檔案的訪問控制列表(ACLs)
CALL    
從另一個批處理程式呼叫這一個。
CD      
顯示當前目錄的名稱或將其更改。
CHCP    
顯示或設定活動內碼表數。
CHDIR   
顯示當前目錄的名稱或將其更改。
CHKDSK  
檢查磁碟並顯示狀態報告。
CHKNTFS
顯示或修改啟動時間磁碟檢查。
CLS     
清除螢幕。
CMD     
開啟另一個Windows命令解釋程式視窗。
COLOR   
設定預設控制檯前景和背景顏色。


COMP    
比較兩個或兩套檔案的內容。
COMPACT
顯示或更改NTFS分割槽上檔案的壓縮。
CONVERT
FAT卷轉換成NTFS。您不能轉換當前驅動器。
COPY    
將至少一個檔案複製到另一個位置。
DATE    
顯示或設定日期。
DEL     
刪除至少一個檔案。
DIR     
顯示一個目錄中的檔案和子目錄。
DISKCOMP
比較兩個軟盤的內容。
DISKCOPY
將一個軟盤的內容複製到另一個軟盤。
DOSKEY  
編輯命令列、呼叫Windows命令並建立巨集。
ECHO    
顯示訊息,或將命令回顯開啟或關上。
ENDLOCAL
結束批檔案中環境更改的本地化。
ERASE   
刪除至少一個檔案。
EXIT    
退出CMD.EXE程式(命令解釋程式)
FC      
比較兩個或兩套檔案,並顯示不同處。
FIND    
在檔案中搜索文字字串。
FINDSTR
在檔案中搜索字串。
FOR     
為一套檔案中的每個檔案執行一個指定的命令
FORMAT  
格式化磁碟,以便跟Windows使用。
FTYPE   
顯示或修改用於副檔名關聯的檔案型別。
GOTO    
Windows命令解釋程式指向批處理程式中某個標明的行。
GRAFTABL
啟用Windows來以影象模式顯示擴充套件字符集。
HELP    
提供Windows命令的幫助資訊。
IF      
執行批處理程式中的條件性處理。
LABEL   
建立、更改或刪除磁碟的卷標。
MD      
建立目錄。
MKDIR   
建立目錄。
MODE    
配置系統裝置。
MORE    
一次顯示一個結果螢幕。
MOVE    
將檔案從一個目錄移到另一個目錄。
PATH    
顯示或設定可執行檔案的搜尋路徑。
PAUSE   
暫停批檔案的處理並顯示訊息。
POPD    
還原PUSHD儲存的當前目錄的上一個值。
PRINT   
列印文字檔案。
PROMPT  
更改Windows命令提示符。
PUSHD   
儲存當前目錄,然後對其進行更改。
RD      
刪除目錄。
RECOVER
從有問題的磁碟恢復可讀資訊。
REM     
記錄批檔案或CONFIG.SYS中的註釋。
REN     
重新命名檔案。
RENAME  
重新命名檔案。
REPLACE
替換檔案。
RMDIR   
刪除目錄。
SET     
顯示、設定或刪除Windows環境變數。
SETLOCAL
開始批檔案中環境更改的本地化。
SHIFT   
更換批檔案中可替換引數的位置。
SORT    
對輸入進行分類。
START   
啟動另一個視窗來執行指定的程式或命令。
SUBST   
將路徑跟一個驅動器號關聯。
TIME    
顯示或設定系統時間。
TITLE   
設定CMD.EXE會話的視窗標題。
TREE    
以圖形模式顯示驅動器或路徑的目錄結構。
TYPE    
顯示文字檔案的內容。
VER     
顯示Windows版本。
VERIFY  
告訴Windows是否驗證檔案是否已正確寫入磁碟。
VOL     
顯示磁碟卷標和序列號。
XCOPY   
複製檔案和目錄樹。


舉例看了下面例項,相信你會對學到更多system在C程式設計中的應用。例一:C語言呼叫DOS命令實現定時關機:#include<stdio.h>#include<string.h>#include<stdlib.h>int print(){printf(" ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪╪╪╪\n");printf("╔═══╧╧C語言關機程式 ╧╧═══╗\n");printf("║※1.實現10分鐘內的定時關閉計算機 ║\n");printf("║※2.立即關閉計算機  ║\n");printf("║※3.登出計算機  ║\n");printf("║※0.退出系統  ║\n");printf("╚═══════════════════╝\n");return 0;}void main(){system("title C語言關機程式");//設定cmd視窗標題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("您想在多少秒後自動關閉計算機?(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語言刪除檔案,例如檔案的位置是d:\123.txt用system()函式執行windows命令。#include <stdlib.h>#include <stdio.h>int main(void){system("del d:\123.txt");return 0;}

Linux/Unix函式

函式詳解(執行shell 命令)相關函式fork,execve,waitpid,popen表頭檔案#include<stdlib.h>定義函式int system(const char * string);函式說明system()會呼叫fork()產生子程序,由子程序來呼叫/bin/sh-c string來執行引數string字串所代表的命令,此命令執行完後隨即返回原呼叫的程序。在呼叫system()期間SIGCHLD 訊號會被暫時擱置,SIGINT和SIGQUIT 訊號則會被忽略。返回值如果fork()失敗 返回-1:出現錯誤如果exec()失敗,表示不能執行Shell,返回值相當於Shell執行了exit(127)如果執行成功則返回子Shell的終止狀態如果system()在呼叫/bin/sh時失敗則返回127,其他失敗原因返回-1。若引數string為空指標(NULL),則返回非零值>;。如果system()呼叫成功則最後會返回執行shell命令後的返回值,但是此返回值也有可能為 system()呼叫/bin/sh失敗所返回的127,因此最好能再檢查errno 來確認執行成功。附加說明在編寫具有SUID/SGID許可權的程式時請勿使用system(),system()會繼承環境變數,通過環境變數可能會造成系統安全的問題。範例#i nclude<stdlib.h>main(){system(“ls -al /etc/passwd /etc/shadow”);}執行結果:-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的區別1、system()和exec()都可以執行程序外的命令,system是在原程序上開闢了一個新的程序,但是exec是用新程序(命令)覆蓋了原有的程序2、system()和exec()都有能產生返回值,system的返回值並不影響原有程序,但是exec的返回值影響了原程序具體例:效果如下:
#include <stdio.h>#include <stdlib.h>int main(){ system("mode con cols=50 lines=25");//視窗寬度高度 //indicate ten number,black background for(int i=0;i<10;i++)  printf("第%2d個數字是:%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個符號是:%c\n",j+1,(char)(63+j)); system("pause"); // system("VOL"); system("pause"); return 0;}