上一主題下一主題
關鍵字
主題 : 如何在自己寫的 Linux C 程序中以一種優雅的方式調用一些命令?
級別: 北風技術菜鳥


UID: 471053
精華: 0
發帖: 1898
威望: 5886 點
學點: 2148 點
貢獻: 184 點
好評: 0 點
學幣: 16 個
注冊時間: 2014-07-03
最后登錄: 2015-04-04
樓主  發表于: 2015-03-26 00:44||

如何在自己寫的 Linux C 程序中以一種優雅的方式調用一些命令?

最近準備使用 C語言 寫一個程序,但是需要用到一些已經存在的命令行工具去實現一部分的功能,例如 ifconfig 等,但是,不太想用 fork 之后用 execv 去實現,這樣看上去跟 shell腳本 好像沒有什么不同。特地在這里請教大家: ^udl&>  
\?~cJMN  
如何在自己寫的程序中以一種優雅的方式調用一些命令? V8-*dE  
例如,能不能利用這些工具的源碼去進行封裝,不過我不會…… ~d"9 ?K^#  
+Vw]DLWR  
在此先謝謝大家了~
此帖懸賞中(剩余時間:已結束)...
最佳答案: 2 學點
熱心助人剩余點數: 1 學點
級別: 北風資深評論員


UID: 471051
精華: 0
發帖: 5449
威望: 7518 點
學點: 8435 點
貢獻: 216 點
好評: 0 點
學幣: 116 個
注冊時間: 2014-07-03
最后登錄: 2015-04-06
沙發(1樓)  發表于: 2015-03-26 00:49||

用system()或popen(),不知道算不算優雅,這個還是留給你自己來評判吧。 ]v.Yt/&C{  
b<KKF'  
#include <stdlib.h> @fd{5 >\  
#include <stdio.h> cQh=Mri]  
i(kr#XsU  
#define SIZE 100 ;MjOs&1f0K  
IE&G7\>(yO  
int main() 'Y5=A!*@tf  
{ %xt\|Lt  
    system("ifconfig eth0"); \>4x7mF!  
    FILE *f = popen("ifconfig eth0", "r"); 5fK<DkB$>:  
    if (f) { ni3A+Y0  
        char buf[SIZE]; b!g8NG  
        while (fread(buf, SIZE, 1, f)) { ]j< & :_  
            printf("%s", buf);  。vXe}%  
        } n:YA4t7S  
        pclose(f); <nn!9V\C   
    } )X-TJ+d  
    return 0; ,y/N^^\  
}
級別: 北風資深評論員


UID: 471051
精華: 0
發帖: 5449
威望: 7518 點
學點: 8435 點
貢獻: 216 點
好評: 0 點
學幣: 116 個
注冊時間: 2014-07-03
最后登錄: 2015-04-06
板凳(2樓)  發表于: 2015-03-26 00:49||

任何調用命令都是對 fork 之后 exec* 的封裝,包括 shell 腳本。 K/Q%tr1W0  
于是,你需要的是一個優雅的封裝,但是你又不告訴我你用什么寫這個程序。 jvI!BZ  
l@ amAusE  
于是,我也不會答。
級別: 北風資深評論員


UID: 471051
精華: 0
發帖: 5449
威望: 7518 點
學點: 8435 點
貢獻: 216 點
好評: 0 點
學幣: 116 個
注冊時間: 2014-07-03
最后登錄: 2015-04-06
地板(3樓)  發表于: 2015-03-26 00:49||

把已有功能之外的,腳本不能實現的/不方便實現的功能用C寫出來,最后用腳本調用所有的模塊,優雅。
級別: 北風資深評論員


UID: 471051
精華: 0
發帖: 5449
威望: 7518 點
學點: 8435 點
貢獻: 216 點
好評: 0 點
學幣: 116 個
注冊時間: 2014-07-03
最后登錄: 2015-04-06
地下室(4樓)  發表于: 2015-03-26 00:49||

libpipeline? B;t U+36nM  
mMmzi4HL  
既然要調用命令,那就是調用命令。如果對方有庫,那才能去調用庫(但是會復雜很多的啊)。如果有源碼,你可以看看它是怎么實現的,然后把對方的源碼****過來,改改用(不過動手前要注意許可證)。
大有彩票开户 2019最新网赚商机 捕鱼棋牌 网赚能赚到钱吗 北京28预测 网赚联盟 大资本彩票网 江西11选5 19年网赚app 福缘网赚论坛