对于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 函数来执行ucilibuci
命令而不通过 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