新聞中心
利用Linux C語(yǔ)言實(shí)現(xiàn)調(diào)用內(nèi)部命令的方法

成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(成都創(chuàng)新互聯(lián)).為客戶提供專(zhuān)業(yè)的服務(wù)器主機(jī)托管,四川各地服務(wù)器托管,服務(wù)器主機(jī)托管、多線服務(wù)器托管.托管咨詢專(zhuān)線:13518219792
在Linux系統(tǒng)中,有很多內(nèi)部命令可以用于執(zhí)行各種操作,如ls、cd、pwd、mkdir等等。這些命令通常都是以可執(zhí)行文件的形式存在于系統(tǒng)的bin目錄中。在命令行終端中使用這些命令非常容易,但如果我們想在C語(yǔ)言程序中調(diào)用這些命令,則需要使用system函數(shù)。本文將介紹如何在Linux C語(yǔ)言中使用system函數(shù)實(shí)現(xiàn)調(diào)用內(nèi)部命令的方法。
一、system函數(shù)介紹
在Linux系統(tǒng)中,system函數(shù)是一個(gè)用于執(zhí)行shell命令的函數(shù)。它的原型定義如下:
“`
int system(const char *command);
“`
其中,command參數(shù)是要執(zhí)行的shell命令字符串。當(dāng)system函數(shù)被調(diào)用時(shí),它會(huì)調(diào)用/bin/sh進(jìn)程來(lái)執(zhí)行該命令,并返回執(zhí)行結(jié)果的退出狀態(tài)碼(或者-1表示執(zhí)行失?。?/p>
例如,要在C語(yǔ)言程序中執(zhí)行l(wèi)s命令,可以使用以下代碼:
“`
#include
int mn() {
int ret = system(“l(fā)s”);
return 0;
}
“`
這里的ret就是執(zhí)行l(wèi)s命令的返回值,實(shí)現(xiàn)了在C語(yǔ)言程序中調(diào)用內(nèi)部命令的效果。
二、調(diào)用內(nèi)部命令示例
以下是一個(gè)完整的示例程序,演示如何在C語(yǔ)言程序中調(diào)用內(nèi)部命令。這個(gè)程序的功能是執(zhí)行命令ls、cd、pwd、mkdir和exit,并根據(jù)命令行參數(shù)來(lái)判斷執(zhí)行哪個(gè)命令。
“`
#include
#include
#include
int mn(int argc, char **argv) {
if (argc
printf(“Usage: %s command\n”, argv[0]);
return 1;
}
if (strcmp(argv[1], “l(fā)s”) == 0) {
system(“l(fā)s”);
} else if (strcmp(argv[1], “cd”) == 0) {
if (argc
printf(“Usage: %s cd directory\n”, argv[0]);
return 1;
}
chdir(argv[2]);
} else if (strcmp(argv[1], “pwd”) == 0) {
system(“pwd”);
} else if (strcmp(argv[1], “mkdir”) == 0) {
if (argc
printf(“Usage: %s mkdir directory\n”, argv[0]);
return 1;
}
char cmd[256];
sprintf(cmd, “mkdir %s”, argv[2]);
system(cmd);
} else if (strcmp(argv[1], “exit”) == 0) {
exit(0);
} else {
printf(“Unsupported command: %s\n”, argv[1]);
}
return 0;
}
“`
這里使用了命令行參數(shù),通過(guò)讀取argv[1]獲取要執(zhí)行的命令。當(dāng)命令為ls、pwd或exit時(shí),直接調(diào)用system函數(shù)執(zhí)行相應(yīng)的命令;當(dāng)命令為cd或mkdir時(shí),需要根據(jù)命令行參數(shù)構(gòu)造出shell命令字符串再調(diào)用system函數(shù)執(zhí)行。
需要注意的是,調(diào)用chdir函數(shù)改變當(dāng)前工作目錄時(shí),不要在子進(jìn)程中調(diào)用,因?yàn)樗粫?huì)影響到子進(jìn)程。如果要在父進(jìn)程中改變當(dāng)前工作目錄,應(yīng)該使用chdir函數(shù)本身,而不是調(diào)用cd命令。
三、小結(jié)
相關(guān)問(wèn)題拓展閱讀:
- 在Linux系統(tǒng)中,如何運(yùn)行一個(gè)C語(yǔ)言程序?
在Linux系統(tǒng)中,如何運(yùn)行一個(gè)C語(yǔ)言程序?
如晌賣(mài)果已經(jīng)寫(xiě)好了源慧源文宴碧逗件,那么cd 進(jìn)所在的目錄
gcc filename.c -o filename
./filename
1、打開(kāi)kali linux的終端。創(chuàng)建一個(gè)文件并命名為test.c。在終端輸入:touch test.c。
2、可以看到已經(jīng)生成了一個(gè)后綴為test.c的
源文件
。然后用vim工具打開(kāi)這個(gè)文件并編寫(xiě)代碼。在終端中輸入:vim test.c或者gvim test.c打開(kāi)這個(gè)文件并編寫(xiě)代碼。
3、編寫(xiě)完了這個(gè)代碼?,F(xiàn)在開(kāi)始編譯源文件。在終端中輸入:gcc test.cgcc是linux自帶的c語(yǔ)言編譯器。迅鍵遲如果是windows則要用ide工具來(lái)編譯。
linux系統(tǒng)
一般寫(xiě)C語(yǔ)言用gcc +vim+gdb三個(gè)自帶的工具就可以了。
4、打完gcc test.c編譯完C源文件。然后就可以看見(jiàn)a.out的文件。一般linux系統(tǒng)就默認(rèn)為a.out為編譯完的文件?,F(xiàn)在運(yùn)行a.out文件。在a.out文件的目錄下打開(kāi)終端并輸入./a.out就是運(yùn)行文件了畝李。
5、如果想要編譯完的文件名不要用a.out文件。就可以在編譯時(shí)打入.gcc test.c -o test.out然后就可以看見(jiàn)有一個(gè)test.out.文件 了。-o后面跟著的編譯生成的文件名亮清。
6、再運(yùn)行test.out在終端中輸入./test.out結(jié)果如圖。這樣在linux系統(tǒng)下編譯并運(yùn)行C語(yǔ)言就完成了。
我不太明白你說(shuō)的是什么意思,Linux下的C編程一般是通過(guò)gcc實(shí)現(xiàn)的。
例如,創(chuàng)建了一個(gè)hello.c文本,在文本中寫(xiě)入
#include
int main(void)
{
printf(“
hello world
!!”);
return 0;
}
然后在終端輸入
$ gcc –o hello hello.c
$ /tmp/hello
注:hello.c文件放在/tmp目錄下,通過(guò)gcc -o hello hello.c命令生成一個(gè)hello文件,它派散空是一個(gè)
可執(zhí)行塵瞎文件
,然后直掘纖接執(zhí)行,就可以運(yùn)行該程序了。
gcc 的編譯參數(shù)很多,可以查看手冊(cè)即可按您的編譯目的哪物吵選擇編譯方李侍式,按一般方法編譯之后,可通過(guò)指出目標(biāo)文件的路徑來(lái)執(zhí)行,也可以放在環(huán)境變量所指出的路徑中,直接在終端輸入命令執(zhí)行螞早。
linux c 調(diào)用內(nèi)部命令的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux c 調(diào)用內(nèi)部命令,利用linux c語(yǔ)言實(shí)現(xiàn)調(diào)用內(nèi)部命令的方法,在Linux系統(tǒng)中,如何運(yùn)行一個(gè)C語(yǔ)言程序?的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站設(shè)計(jì)制作選創(chuàng)新互聯(lián),專(zhuān)業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專(zhuān)注成都高端網(wǎng)站建設(shè)定制開(kāi)發(fā)服務(wù),為客戶提供專(zhuān)業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)站設(shè)計(jì)服務(wù);成都創(chuàng)新互聯(lián)服務(wù)內(nèi)容包含成都網(wǎng)站建設(shè),小程序開(kāi)發(fā),營(yíng)銷(xiāo)網(wǎng)站建設(shè),網(wǎng)站改版,服務(wù)器托管租用等互聯(lián)網(wǎng)服務(wù)。
新聞標(biāo)題:利用linux c語(yǔ)言實(shí)現(xiàn)調(diào)用內(nèi)部命令的方法 (linux c 調(diào)用內(nèi)部命令)
轉(zhuǎn)載源于:http://m.5511xx.com/article/cdiephc.html


咨詢
建站咨詢
