system在c語言中
『壹』 c語言的system函數
system(系統)函數
windows操作系統下system () 函數詳解(主要是在C語言中的應用)
功 能: 發出一個DOS命令
用 法: int system(char *command);
system函數已經被收錄在標准c庫中,可以直接調用
程序例:
#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")可以實現凍結屏幕,便於觀察程序的執行結果;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=亮白色
(注意:Microsoft Visual C++6.0 支持system)
舉例
看了下面實例,相信你會對學到更多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;
}
『貳』 C語言中system是什麼意思
向操作系統傳遞命令行,具體這個程序段,意思就是將redadd字元串作為命令行傳遞給操作系統去執行,system(regadd);的作用等同於在運行窗口中運行regadd字元串中保存的命令。
『叄』 C語言中system("pause")是什麼作用和意思
暫停執行,按任意鍵繼續,一般需要把執行過程中的執行信息列印出來時就可以加這么一條,方便查看執行結果。
『肆』 在c語言中system有什麼功能,如何使用
可以調用系統命令,如system("pause"),可以使程序暫停,保持窗口顯示,否則程序就立刻退出了
『伍』 在C語言中,程序有一個是system("CLS");時什麼意思
在C語言程序中是清屏的意思。
當你編寫的程序有輸出的時候,如果要進行多次調試,屏幕上會顯示很多次的輸出的結果,看上去非常的復雜非常的亂。那麼我們就可以在程序中的輸出語句之前加上「system("CLS");」,當我們用上這條語句之後。
這樣每次程序運行的時候都會將上一次運行輸出的內容給清除掉,屏幕上只顯示本次輸出的結果。這樣看起來就非常的簡潔。

(5)system在c語言中擴展閱讀:
在VC環境下有兩種辦法實現清屏:
1、#include <windows.h>
system("cls");這種辦法的缺點是程序額外運行系統程序執行清屏操作,延長了程序執行時間。
2、自己寫函數,這種辦法快
這是從微軟MSDN得到的方法:
/* Standard error macro for reporting API errors */
#define PERR(bSuccess, api){if(!(bSuccess)) printf("%s:Error %d from %s
on line %d ", __FILE__, GetLastError(), api, __LINE__);}
void cls( HANDLE hConsole )
{
COORD coordScreen = { 0, 0 }; /* here's where we'll home the
cursor */
BOOL bSuccess;
DWORD cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO csbi; /* to get buffer info */
DWORD dwConSize; /* number of character cells in
the current buffer */
/* get the number of character cells in the current buffer */
bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi );
PERR( bSuccess, "GetConsoleScreenBufferInfo" );
dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
/* fill the entire screen with blanks */
bSuccess = FillConsoleOutputCharacter( hConsole, (TCHAR) ' ',
dwConSize, coordScreen, &cCharsWritten );
PERR( bSuccess, "FillConsoleOutputCharacter" );
/* get the current text attribute */
bSuccess = GetConsoleScreenBufferInfo( hConsole, &csbi );
PERR( bSuccess, "ConsoleScreenBufferInfo" );
/* now set the buffer's attributes accordingly */
bSuccess = FillConsoleOutputAttribute( hConsole, csbi.wAttributes,
dwConSize, coordScreen, &cCharsWritten );
PERR( bSuccess, "FillConsoleOutputAttribute" );
/* put the cursor at (0, 0) */
bSuccess =SetConsoleCursorPosition( hConsole, coordScreen );
PERR( bSuccess, "SetConsoleCursorPosition" );
return;
}
參考資料來源:網路-system("cls")
『陸』 C語言中system("pause")是什麼作用和意思
system就是調用從程序中調用系統命令(和shell命令).
system("pause")就是從程序里調用「pause」命令;
而「pause」這個系統命令的功能很簡單,就是在命令行上輸出一行類似於「Press any key to exit」的字,等待用戶按一個鍵,然後返回.
『柒』 在c語言中system有什麼功能,如何使用
可以調用
系統命令
,如system("pause"),可以使
程序暫停
,保持窗口顯示,否則程序就立刻退出了
『捌』 system在C語言里是什麼意思
system()函數功能強大,很多人用卻對它的原理知之甚少先看linux版system函數的源碼:#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <unistd.h>
int system(const char * cmdstring)
{
pid_t pid;
int status;
if(cmdstring == NULL){
return (1);
}
if((pid = fork())<0){
status = -1;
}
else if(pid = 0){
execl("/bin/sh", "sh", "-c", cmdstring, (char *)0);
-exit(127); //子進程正常執行則不會執行此語句
}
else{
while(waitpid(pid, &status, 0) < 0){
if(errno != EINTER){
status = -1;
break;
}
}
}
return status;
}
分析一下原理估計就能看懂了:
當system接受的命令為NULL時直接返回,否則fork出一個子進程,因為fork在兩個進程:父進程和子進程中都返回,這里要檢查返回的pid,fork在子進程中返回0,在父進程中返回子進程的pid,父進程使用waitpid等待子進程結束,子進程則是調用execl來啟動一個程序代替自己,execl("/bin/sh", "sh", "-c", cmdstring, (char*)0)是調用shell,這個shell的路徑是/bin/sh,後面的字元串都是參數,然後子進程就變成了一個shell進程,這個shell的參數是cmdstring,就是system接受的參數。在windows中的shell是command,想必大家很熟悉shell接受命令之後做的事了。
再解釋下fork的原理:當一個進程A調用fork時,系統內核創建一個新的進程B,並將A的內存映像復制到B的進程空間中,因為A和B是一樣的,那麼他們怎麼知道自己是父進程還是子進程呢,看fork的返回值就知道,上面也說了fork在子進程中返回0,在父進程中返回子進程的pid。
windows中的情況也類似,就是execl換了個又臭又長的名字,參數名也換的看了讓人發暈的,我在MSDN中找到了原型,給大家看看:
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpVerb,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
用法見下:
ShellExecute(NULL, "open", "c:\\a.reg", NULL, NULL, SW_SHOWNORMAL);
你也許會奇怪 ShellExecute中有個用來傳遞父進程環境變數的參數 lpDirectory,linux中的execl卻沒有,這是因為execl是編譯器的函數(在一定程度上隱藏具體系統實現),在linux中它會接著產生一個linux系統的調用 execve, 原型見下:
int execve(const char * file,const char **argv,const char **envp);
看到這里就會明白為什麼system()會接受父進程的環境變數,但是用system改變環境變數後,system一返回主函數還是沒變。原因從system的實現可以看到,它是通過產生新進程實現的,從我的分析中可以看到父進程和子進程間沒有進程通信,子進程自然改變不了父進程的環境變數。
使用了system函數就能執行dos指令。
#include <stdio.h>
#include <stdlib.h>
xiaoyu()
{
char *a;
int n=0;
FILE *f;
f=fopen("file.bat","w+");/*新建一個批處理*/
if(f==NULL)
exit(1);
a="echo"; /*DOS命令*/
for(n=65;n<=90;n++)/*大寫A-Z*/
fprintf(f,"%s %c\n",a,n);/*利用ASCII碼輸出A-Z,寫出批處理*/
fclose(f);
system("file.bat");/*運行批處理*/
}
main()
{
char *string;
xiaoyu();
string="echo C語言的system函數\n";/*輸出中文*/
system(string);
system("pause");/*程序暫停*/
}
C中可以使用DOS命令,以後編程通過調用DOS命令很多操作就簡單多了。
『玖』 C語言中system("pause")是什麼作用和意思
system(「pause」) 是調用DOS系統的暫停命令 pause 來暫停程序執行,按任意一個鍵後將繼續執行。
Sleep() 是 windows 的 函數,讓程序進入睡眠狀態,要求參數 時間毫秒,到時間後自動蘇醒,程序繼續執行。
例如: Sleep(2500); 休眠 2.5 秒,滿2.5 秒 後 程序繼續運行。
