真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

c調用linux命令 linux c調用系統(tǒng)命令

我想在linux下寫一個c程序調用linux的可執(zhí)行文件或者程序,怎么做

Linux中啟動另一個可執(zhí)行文件或程序用system函數最理想了,這個函數將在你編寫的那個程序的內部啟動另一個程序,從而創(chuàng)建一個新進程,并等待這個進程執(zhí)行完畢退出。如果正常執(zhí)行,system函數將返回被執(zhí)行程序的退出碼;如果無法運行這個程序,將返回錯誤代碼127;如果是其他錯誤,返回-1。這個函數的原型是:

創(chuàng)新互聯公司專注于渭城企業(yè)網站建設,成都響應式網站建設公司,成都商城網站開發(fā)。渭城網站建設公司,為渭城等地區(qū)提供建站服務。全流程定制網站設計,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯公司專業(yè)和態(tài)度為您提供的服務

#include stdlib.h

int system(const char *string);

參數string是將要執(zhí)行的程序的命令字符串。

還有一種執(zhí)行外部程序的方法是exec系列函數,但這個系列的函數都是將當前進程的替換成新進程,也就是說原來的進程不存在了。

Linux下的c編程:系統(tǒng)調用

標準的c函數庫是所有的編譯都要具有的函數庫,(實際上還是略有不同),但是這些基本上實現方法略有不同,但是結果和標準是一樣的。但是linux的系統(tǒng)調用,調用是linux的系統(tǒng)庫,比如說unistd.h下的fork這個是Linux下特有,你在vs上,就沒有這個庫,也沒有這個函數。同樣在vs上寫c,你可以引入頭文件比如windows.h,顯然這個庫是Linux不具有的。簡單說系統(tǒng)調用庫根據具體的操作系統(tǒng)環(huán)境不同而不同,而c標準庫,是所有支持c語言編譯器都有的。

寫一個C語言程序: 能修改Linux 主機的IP、DHCP、DNS 等設置

可以調用system()函數。把linux系統(tǒng)命令拼成字符串,然后調用system去執(zhí)行這個字符串就可以了。修改系統(tǒng)配置,需要root身份。

1、system函數:

原型:int

system(const

char

*

command);

功能:執(zhí)行

dos(windows系統(tǒng))

shell(Linux/Unix系統(tǒng))

命令,參數字符串command為命令名;

說明:在windows系統(tǒng)中,system函數直接在控制臺調用一個command命令。在Linux/Unix系統(tǒng)中,system函數會調用fork函數產生子進程,由子進程來執(zhí)行command命令,命令執(zhí)行完后隨即返回原調用的進程;

頭文件:stdlib.h;

返回值:命令執(zhí)行成功返回0,執(zhí)行失敗返回-1。

2、例程:

#includestdio.h

#includestdlib.h

int main(){

system("del C:\\123.txt");//在控制臺中,執(zhí)行命令del C:\\123.txt,刪除C盤目錄下的123.txt文件

return 0;

}

linux下如何用c語言調用shell命令

參數type可使用“r”代表讀取,“w”代表寫入。依照此type值,popen()會建立管道連到子進程的標準輸出設備或標準輸入設備,然后返回一個文件指針。隨后進程便可利用此文件指針來讀取子進程的輸出設備或是寫入到子進程的標準輸入設備中。此外,所有使用文件指針(FILE*)操作的函數也都可以使用,除了fclose()以外。 返回值:若成功則返回文件指針,否則返回NULL,錯誤原因存于errno中。 注意:在編寫具SUID/SGID權限的程序時請盡量避免使用popen(),popen()會繼承環(huán)境變量,通過環(huán)境變量可能會造成系統(tǒng)安全的問題。 例:C程序popentest.c內容如下: #include main() { FILE * fp; charbuffer[80]; fp=popen(“~/myprogram/test.sh”,”r”); fgets(buffer,sizeof(buffer),fp); printf(“%s”,buffer); pclose(fp); } 執(zhí)行結果如下: xiakeyou@ubuntu:~/myprogram$ vim popentest.c xiakeyou@ubuntu:~/myprogram$ gcc popentest.c -o popentest xiakeyou@ubuntu:~/myprogram$ ./popentest /home/d/e/xiakeyou xiakeyou@ubuntu:~/myprogram$ 只是偶能力可能有點有限,沒有太看懂。直接用system()倒是腳本可是執(zhí)行,只是返回值卻是一塌糊涂,試了多次也沒有找到什么規(guī)律。不免又看了一下上面的那篇博文,得到一些啟發(fā),可以這樣來實現: 先將腳本的返回值利用 echo XXXXX 輸出到一個本地文件中 當需要這個返回值是,可是通過C語言的文件操作函數來直接從文件中讀取 后來一想,這應該就是上文中POPEN的實現方法! C程序調用shell腳本共有三種法子 :system()、popen()、exec系列函數 system() 不用你自己去產生進程,它已經封裝了,直接加入自己的命令exec 需要你自己 fork 進程,然后exec 自己的命令 popen() 也可以實現執(zhí)行你的命令,比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命令以其簡略 高效的作用得到很很廣泛 的利用 ,下面是一個例子 例:在~/test/目錄下有shell腳本test.sh,內容為 #!bin/bash #test.sh echo hello 在同層目錄下新建一個c文件system_test.c,內容為: #include int main() { system("~/test/test.sh"); } 履行 效果 如下: [root@localhost test]$gcc system_test.c -o system_test [root@localhost test]$./system_test hello [root@localhost test]$ 2)popen(char *command,char *type) popen()會調用fork()產生 子歷程,然后從子歷程中調用/bin/sh -c來履行 參數command的指令。參數type可應用 “r”代表讀取,“w”代表寫入。遵循此type值,popen()會建立 管道連到子歷程的標準 輸出設備 或標準 輸入設備 ,然后返回一個文件指針。隨后歷程便可利用 此文件指針來讀取子歷程的輸出設備 或是寫入到子歷程的標準 輸入設備 中。此外,所有應用 文 件指針(FILE*)操作的函數也都可以應用 ,除了fclose()以外。 返回值:若成功 則返回文件指針,否則返回NULL,差錯 原因存于errno中。


本文名稱:c調用linux命令 linux c調用系統(tǒng)命令
路徑分享:http://weahome.cn/article/dddoohs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部