system函數(shù)調(diào)用系統(tǒng)命令system函數(shù)用于C程序中調(diào)用各大操作系統(tǒng)的命令和應(yīng)用程序,被調(diào)用的命令和應(yīng)用程序以字符串的方式作為system函數(shù)的參數(shù)傳入,實(shí)現(xiàn)讀取用戶(hù)輸入的命令,并執(zhí)行該命令。在windows上運(yùn)行該程序時(shí)可以傳入notepad,calc等等實(shí)現(xiàn)程序調(diào)用。而Linux和macOS上也有自己的命令可以提供給system函數(shù)來(lái)調(diào)用。 這里編寫(xiě)一個(gè)交互式程序:通過(guò)借助C語(yǔ)言的scanf函數(shù)讀取用戶(hù)在終端的命令,然后調(diào)用system函數(shù)來(lái)執(zhí)行對(duì)應(yīng)的命令。 如果你的開(kāi)發(fā)環(huán)境不是Windows10 1903和Visual Studio 2019,可以刪除#define _CRT_SECURE_NO_WARNINGS。 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>/* 使用system函數(shù)調(diào)用各大操作系統(tǒng)的命令 @author liuguanglei ittimelinedotnet@gmail.com @website ittimeline.net @version 2019/10/17*/int main(int argc, char* argv[]){ // 提示用戶(hù)輸入執(zhí)行的命令 printf('請(qǐng)輸入需要執(zhí)行的命令\n'); //定義字符串保存用戶(hù)輸入命令 char command[100] = {0}; //讀取用戶(hù)從鍵盤(pán)輸入的命令字符串,并保存到command中 scanf('%s',command); //執(zhí)行命令 system(command); system('pause'); return 0;} 因?yàn)閟ystem函數(shù)位于stdlib.h頭文件中,意味著它是一個(gè)可以跨平臺(tái)使用的函數(shù)。例如在Ubuntu下使用gedit命令調(diào)用文本編輯器 但是各大操作系統(tǒng)的命令和應(yīng)用程序是不相同的,例如在Windows上使用system函數(shù)傳遞字符串參數(shù)'notepad'時(shí)可以打開(kāi)記事本,而移植到了類(lèi)Unix上則無(wú)法調(diào)用記事本。 system函數(shù)阻止Visual Studio 2019閃退在Visual Studio 2019中運(yùn)行程序可以通過(guò)快捷鍵F5直接運(yùn)行,也可以通過(guò)點(diǎn)擊本地Windows調(diào)試器運(yùn)行。 但是發(fā)現(xiàn)在運(yùn)行helloworld后程序有閃退現(xiàn)象,即程序運(yùn)行時(shí)打開(kāi)了終端后立即退出,其原因是程序運(yùn)行是printf函數(shù)默認(rèn)輸出數(shù)據(jù)到終端,因此Visual Studio 2019開(kāi)啟了終端,printf輸出數(shù)據(jù)完成以后,程序遇到return語(yǔ)句并退出,因此終端也會(huì)隨之退出,因?yàn)閺棾鼋K端和退終端的時(shí)間非常短,所有感覺(jué)有閃退現(xiàn)象。 為了解決這一問(wèn)題,首先需要在源文件使用#include <stdlib.h>包含標(biāo)準(zhǔn)庫(kù)頭文件,然后在main函數(shù)的最后一行加上system('pause'),這樣程序運(yùn)行時(shí)不會(huì)立即退出,而是等到用戶(hù)輸入任意鍵(一般習(xí)慣按回車(chē)鍵)才會(huì)退出。 解決 helloworld在Visual Studio 2019運(yùn)行的閃退問(wèn)題 #include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) { printf('Windows10 1903 & Visual Studio 2019 Hello World With C \n'); system('pause'); return 0;}再次運(yùn)行程序時(shí),在程序的末尾會(huì)輸出一句請(qǐng)按任意鍵繼續(xù)... |
|
|
來(lái)自: lllsztz > 《待分類(lèi)》