爲的OpenWRT你可以用下面的命令這樣一個信息:
$uci get network.lan.proto
所以我帶你把你的問題的程序,我只更改用於獲取信息的命令:
#include <stdio.h> <br>
int main(void)
{
FILE *fp;
char buffer[80];
fp=popen("uci get network.lan.proto","r");
fgets(buffer, sizeof(buffer), fp);
printf("%s", buffer);
pclose(fp);
}
看到所有可用的網絡接口,在你的OpenWRT,您可以使用下面的命令:
$uci show network
通過使用libuci
,可以避免在c中使用調用linux命令。 libuci
包含C函數來執行uci命令而不通過popen(popen
用於從shell執行外部命令)。
的libuci默認情況下的OpenWRT的發展環境中存在,不需要下載,不需要構建它,也不需要你的OpenWRT安裝到機器上
可以以這種方式使用libuci
#include <uci.h>
void main()
{
char path[]="network.lan.proto";
char buffer[80];
struct uci_ptr ptr;
struct uci_context *c = uci_alloc_context();
if(!c) return;
if ((uci_lookup_ptr(c, &ptr, path, true) != UCI_OK) ||
(ptr.o==NULL || ptr.o->v.string==NULL)) {
uci_free_context(c);
return;
}
if(ptr.flags & UCI_LOOKUP_COMPLETE)
strcpy(buffer, ptr.o->v.string);
uci_free_context(c);
printf("%s\n", buffer);
}
(未測試)
,當您編譯程序,你必須添加-luci
在編譯命令gcc
很好的問題(+1),但你有什麼嘗試? – MOHAMED
如果你不提供你曾經嘗試過的帳號,那麼就有可能被拒絕投票 – MOHAMED
你想要一般的還是特定的操作系統? – jbr