可以通過system函數,調用shell命令。
在網站設計、做網站中從網站色彩、結構布局、欄目設置、關鍵詞群組等細微處著手,突出企業的產品/服務/品牌,幫助企業鎖定精準用戶,提高在線咨詢和轉化,使成都網站營銷成為有效果、有回報的無錫營銷推廣。創新互聯專業成都網站建設十載了,客戶滿意度97.8%,歡迎成都創新互聯客戶聯系。
1 函數原型:
int system(const char *cmd);
2 功能:
調用cmd內容的系統命令,即shell命令。
3 頭文件:
stdlib.h
4 舉例:
system("ls");
打印當前工作目錄下的文件。
int main(int argc, char * argv[])
{
.....
}
argc: 代表啟動程序時,命令行參數的個數。C和C++語言規定,可執行程序程序本身的文件名,也算是一個命令行參數,因此,argc的值至少是1.
argv[]:指針數組,其中的每個元素都是一個char* 類型的指針,該指針指向一個字符串,這個字符串里就存放著命令行參數。
例如,argv[0]指向的字符串就是第一個命令行參數,即可執行程序的文件名,argv[1]指向第二個命令行參數,argv[2]指向第三個命令行參數....。
#include stdio.h
int main( int argc, char * argv[])
{
int i;
for ( i = 0;i argc; i++)
{
printf("%s\n",argv[i]);
}
return 0;
}
windows下,將上面的程序編譯成sample.exe,然后在控制臺窗口敲:
sample para1 para2 s.txt 5 "hello world"
上面有6個參數,雙引號為了包含空格作為一個參數。
輸出結果:
sample
para1
para2
s.txt
5
hello world
擴展資料:
main函數通常含有參數argc和argv,寫法通常如下:
int main(int argc,char *argv[])
int main(int argc,char **argv)
程序:
#includestdio.h
int main(int argc,char *argv[])
{
int i;
for(i=0;iargc;i++)
printf("第 %d 個參數是 %s\n",i+1,argv[i]);
return 0;
}
你學了MFC就會明白, 雙擊exe文件, 實際上是系統用cmd.exe去運行你雙擊的exe, 運行完后, cmd.exe會自動退出, 但是你自己手動打開了cmd.exe, 它不會自動關閉, 必須你手動來關閉.
system()的輸入參數是一個字符串,這個函數的作用就是在命令行下以命令的形式執行這個字符串。
如“C:\a.exe”在命令行下是可以直接運行的,所以直接填到參數里就行了。不過需要注意的是,字符串作為參數的時候“\”要做一下轉義,要變成“\\”才行。
在C語言中調用shell命令的方法實現。
C程序調用shell腳本共有兩種方法 :system()、popen(),分別如下:
system()
不用自己去創建進程,系統已經封裝了這一步,直接加入自己的命令即可
popen() 也可以實現執行的命令,比system
開銷小
以下分別說明:
1)system(shell命令或shell腳本路徑);
system()
會調用fork()產生 子歷程,由子歷程來調用/bin/sh-c string來履行 參數string字符串所代表的命令,此命令履行
完后隨即返回原調用的歷程。在調用system()期間SIGCHLD 信號會被暫時擱置,SIGINT和SIGQUIT 信號則會被漠視 。
返
回值:如果system()在調用/bin/sh時失敗則返回127,其他失敗原因返回-1。若參數string為空指針(NULL),則返回非零值。 如果
system()調用成功 則最后會返回履行 shell命令后的返回值,但是此返回值也有可能為system()調用/bin/sh失敗所返回的127,因
此最好能再反省 errno 來確認履行 成功 。
system命令以其簡略
高效的作用得到很很廣泛 的利用 ,下面是一個例子
例:在/tmp/testDir/目錄下有shell腳本tsh.sh,內容為
#!/bin/sh
wget $1
echo "Done!"
2)popen(char
*command,char *type)
popen()
會調用fork()產生 子歷程,然后從子歷程中調用/bin/sh -c來履行 參數command的指令。參數type可應用
“r”代表讀取,“w”代表寫入。遵循此type值,popen()會建立 管道連到子歷程的標準 輸出設備 或標準 輸入設備
,然后返回一個文件指針。隨后歷程便可利用 此文件指針來讀取子歷程的輸出設備 或是寫入到子歷程的標準 輸入設備 中。此外,所有應用 文
件指針(FILE*)操作的函數也都可以應用 ,除了fclose()以外。
返回值:若成功
則返回文件指針,否則返回NULL,差錯 原因存于errno中。注意:在編寫具SUID/SGID權限的程序時請盡量避免應用
popen(),popen()會繼承環境變量,通過環境變量可能會造成系統安全的問題。
例:C程序popentest.c內容如下:
#includestdio.h
main
{
FILE * fp;
charbuffer[80];
fp=popen(“~/myprogram/test.sh”,”r”);
fgets(buffer,sizeof(buffer),fp);
printf(“%s”,buffer);
pclose(fp);
}
當前題目:c語言系統函數執行命令行 c語言運行命令
文章出自:http://vcdvsql.cn/article2/hehgic.html
成都網站建設公司_創新互聯,為您提供網站營銷、移動網站建設、電子商務、搜索引擎優化、網站設計、自適應網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯