Linux編程中在命令行啟動另一個可執(zhí)行文件或調(diào)用命令用system函數(shù)最簡單了,這個函數(shù)原理是在你編寫的那個程序的內(nèi)部啟動另一個程序或命令,從而創(chuàng)建一個新進(jìn)程,并等待這個進(jìn)程執(zhí)行完畢退出。如果正常執(zhí)行,system函數(shù)將返回被執(zhí)行程序或命令的退出碼;如果無法運行這個程序或命令,將返回錯誤代碼127;如果是其他錯誤,返回-1。這個函數(shù)的原型是:
目前創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、七里河網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
#include stdlib.h
int system(const char *string);
參數(shù)string是將要執(zhí)行的程序文件名或路徑,如果是啟動一個命令就是一個命令字符串。
還有一種執(zhí)行外部程序的方法是exec系列函數(shù),一般是在fork的子進(jìn)程里面調(diào)用exec系列函數(shù),那主進(jìn)程里直接調(diào)用exec系列不行嗎,為什么要fork再在子進(jìn)程里調(diào)用呢?因為exec系列的函數(shù)(包括execl函數(shù))都是將當(dāng)前進(jìn)程替換成新進(jìn)程,也就是說新進(jìn)程啟動后原來的進(jìn)程就不存在了,exec系列函數(shù)后面的那些代碼就不會再執(zhí)行了。如果你不放在fork子進(jìn)程里面,那主進(jìn)程在執(zhí)行execl函數(shù)后就完全不存在了,所以exec系列函數(shù)的使用都是先fork然后在子進(jìn)程里面調(diào)用。因為exec系列函數(shù)都要使用fork調(diào)用,所以我一般是用system函數(shù)。
1.列出文件清單命令:ls
ls命令能夠列出當(dāng)前目錄下的所有內(nèi)容。ls 命令的執(zhí)行方式為:
# ls [-選項] [文件名或者目錄名]
進(jìn)入到Linux命令行中后,我們至少要知道當(dāng)前所處的位置有哪些內(nèi)容,這些信息就可以使用ls命令來獲得。
在Linux中,ls命令是最常使用的命令之一,因為在命令行下要隨時查看目錄內(nèi)容。如果不加任何選項的話,ls命令僅列出當(dāng)前目錄下的文件和目錄名,例如,想要查看/etc目錄下的內(nèi)容,可以使用下列命令:
# ls /etc
如果想要列出當(dāng)前目錄下所有文件,則可以使用下列命令:
# ls -a
2、cat命令
功能:在標(biāo)準(zhǔn)輸出上顯示文件。
語法:cat [-vTEuAte] 文件
例子: cat example.txt
cat -A exam2.txt
cat file1 file2 file2
3、more命令
功能:在終端屏幕按屏顯示文本文件。
語法: more [-pcdls] 文件
例子: more example.c
more -dc example.c
more -c -10 example.c
4、less命令
less命令的功能幾乎和more命令一樣,也是用來按頁顯示文件,不同之處在于less命令在顯示文件時允許用戶既
可以向前又可以向后翻閱文件。
5、head命令
功能:顯示指定文件的前若干行。缺省設(shè)置為顯示10行
語法:head [-n] 文件
例子: head example.c
head -3 example.c
6、tail命令
功能:顯示指定文件的末尾若干行。缺省設(shè)置為顯示10行
語法:tail [+ / - num ] [參數(shù)] 文件
+num 從第num行以后開始顯示。- num 從距文件尾num行處開始顯示。
例子: tail example.c
tail -4 example.c
7、grep、fgrep和egrep命令
功能:
這組命令以指定模式搜索文件,并通知用戶在什么文件中搜索到與指定的模式匹配的字符串,并打印出所有包含該字符串的文本行,在該文本行的最前面是該行所在的文件名。grep命令一次只能搜索一個指定的模式;egrep命令檢索擴(kuò)展的正則表達(dá)式(包括表達(dá)式組和可選項);fgrep命令檢索固定字符串,它不識別正則表達(dá)式,是快速搜索命令。
語法:
grep [-EFbcihlnvxef] [查找模式] [文件名1,文件名2,……]
egrep [選項] [查找模式] [文件名1,文件名2,……]
fgrep [選項] [查找模式] [文件名1,文件名2,……]
例子: grep "text file" example
grep data *
grep goto *.c
;?????linux如何進(jìn)入命令行?我們一起來了解一下吧。
1、打開linux系統(tǒng),在linux的桌面的空白處右擊,在彈出的下拉選項里,點擊打開終端即可進(jìn)入命令行。
2、在Linux的首頁使用Ctrl+alt+T,打開終端。
Linux支持多終端,可以再使用Ctrl+alt+T命令打開多個終端。
3、通過“searchyourcomputer”功能搜索,terminal,也可以打開。
本文章基于ThinkpadE15品牌、centos7系統(tǒng)撰寫的。
???在Linux bash中可以使用命令行展開特性一步完成需要分開成多步完成的操作,達(dá)到事半功倍的效果。在Linux指令參數(shù)位置使用"{}" 將相應(yīng)的參數(shù)括起來,括號中的參數(shù)以逗號分隔,然后bash在執(zhí)行這一指令時會自動將括號中的內(nèi)容進(jìn)行展開。
示例1:
???同時創(chuàng)建多個目錄,在/tmp目錄下創(chuàng)建a_c,a_d,b_c,b_d等目錄,只需要在命令行中執(zhí)行如下命令即可,無須單個創(chuàng)建:
執(zhí)行結(jié)果如下:
示例2:
???需要在/tmp/mylinux 目錄下創(chuàng)建如下目錄樹。
創(chuàng)建命令如下:
執(zhí)行結(jié)果如下:
在這里可以使用指令tree來查看目錄的層級結(jié)構(gòu),以更直觀的方式將目錄樹顯示出來:
首先,命令應(yīng)該是好和其他兩個區(qū)分開來的了,因為命令都是可以直接敲在shell上面回車執(zhí)行的,而系統(tǒng)調(diào)用和庫函數(shù)都不行;
其次,百Linux系統(tǒng)調(diào)用和C庫函數(shù)都是函數(shù)的形式,即都是“func(args)”的形式,但系統(tǒng)調(diào)用是
由系統(tǒng)內(nèi)核對外提供的服務(wù)接口;C庫函數(shù)和你自己寫的普通的函數(shù)沒有本質(zhì)的區(qū)別,只是在度C標(biāo)準(zhǔn)庫中而已,Linux上面glibc就是C函數(shù)庫。從表專面上看兩者不太好區(qū)分,不過,你可以從它們需要包含的頭文件來區(qū)分,C庫函數(shù)像printf在stdio.h中,std就是標(biāo)準(zhǔn)(standard)的縮寫形式,因此在stdxxx.h中的函數(shù),基本都是C庫函數(shù);像
ssize_t
read(int
fd,
void
*buf,
size_t
count);這樣很多的系統(tǒng)調(diào)用是包含在unistd.h中的,unistd意思是UNIX
Standard,從這個意義就可以區(qū)分了。
希望對你有所幫助,如還有問題,可隨屬時聯(lián)系我:-)
網(wǎng)站題目:linux調(diào)用命令行,linux系統(tǒng)調(diào)出命令行
分享URL:http://muchs.cn/article10/phgsgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、網(wǎng)頁設(shè)計公司、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、品牌網(wǎng)站制作、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)