在程序頭部加上#includewindows.h,然后就可以用system(“字符串”),來執(zhí)行CMD命令了。字符串就是要執(zhí)行的CMD命令。比如:shutdown -s -t 00 可以在C語言或C++中這樣表示:system("shutdown -s -t 00");
成都創(chuàng)新互聯(lián)公司科技有限公司專業(yè)互聯(lián)網(wǎng)基礎(chǔ)服務(wù)商,為您提供服務(wù)器托管,高防服務(wù)器租用,成都IDC機房托管,成都主機托管等互聯(lián)網(wǎng)服務(wù)。
可以,system里面?zhèn)魅氲氖且粋€字符串,你可以先將時間寫進這個字符串,然后再將這個字符串使用system函數(shù)來使用就行了。
1.
char buff[10];
fprintf(buff,"%c:",a);
system(buff);
不能用system("%c:",a)是因為system接受字符串參數(shù)后并不把它當做格式化字符串。而scanf和fprintf是將第一個參數(shù)解釋為格式化字符串的(并不是C的功能,而是在自己實現(xiàn)的。不過既然是標準庫,將其看為C的一部分也可以)。
2.
system("md undel..\\");
就可以了。
雙引號里的“\\”和上面的格式化字符串不一樣,它是C的一部分。這個替換是在編譯時完成的(上例是運行時完成)。"\\"通過這個語法,可以在字符串中插入“\”符號。
在C語言中調(diào)用shell命令的方法實現(xiàn)。
C程序調(diào)用shell腳本共有兩種方法 :system()、popen(),分別如下:
system()
不用自己去創(chuàng)建進程,系統(tǒng)已經(jīng)封裝了這一步,直接加入自己的命令即可
popen() 也可以實現(xiàn)執(zhí)行的命令,比system
開銷小
以下分別說明:
1)system(shell命令或shell腳本路徑);
system()
會調(diào)用fork()產(chǎn)生 子歷程,由子歷程來調(diào)用/bin/sh-c string來履行 參數(shù)string字符串所代表的命令,此命令履行
完后隨即返回原調(diào)用的歷程。在調(diào)用system()期間SIGCHLD 信號會被暫時擱置,SIGINT和SIGQUIT 信號則會被漠視 。
返
回值:如果system()在調(diào)用/bin/sh時失敗則返回127,其他失敗原因返回-1。若參數(shù)string為空指針(NULL),則返回非零值。 如果
system()調(diào)用成功 則最后會返回履行 shell命令后的返回值,但是此返回值也有可能為system()調(diào)用/bin/sh失敗所返回的127,因
此最好能再反省 errno 來確認履行 成功 。
system命令以其簡略
高效的作用得到很很廣泛 的利用 ,下面是一個例子
例:在/tmp/testDir/目錄下有shell腳本tsh.sh,內(nèi)容為
#!/bin/sh
wget $1
echo "Done!"
2)popen(char
*command,char *type)
popen()
會調(diào)用fork()產(chǎn)生 子歷程,然后從子歷程中調(diào)用/bin/sh -c來履行 參數(shù)command的指令。參數(shù)type可應(yīng)用
“r”代表讀取,“w”代表寫入。遵循此type值,popen()會建立 管道連到子歷程的標準 輸出設(shè)備 或標準 輸入設(shè)備
,然后返回一個文件指針。隨后歷程便可利用 此文件指針來讀取子歷程的輸出設(shè)備 或是寫入到子歷程的標準 輸入設(shè)備 中。此外,所有應(yīng)用 文
件指針(FILE*)操作的函數(shù)也都可以應(yīng)用 ,除了fclose()以外。
返回值:若成功
則返回文件指針,否則返回NULL,差錯 原因存于errno中。注意:在編寫具SUID/SGID權(quán)限的程序時請盡量避免應(yīng)用
popen(),popen()會繼承環(huán)境變量,通過環(huán)境變量可能會造成系統(tǒng)安全的問題。
例:C程序popentest.c內(nèi)容如下:
#includestdio.h
main
{
FILE * fp;
charbuffer[80];
fp=popen(“~/myprogram/test.sh”,”r”);
fgets(buffer,sizeof(buffer),fp);
printf(“%s”,buffer);
pclose(fp);
}