$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
您可以通过使用避免在c语言中调用linux命令
libuci。的
libuci含有C函数来执行不经由POPEN传递UCI命令(
popen用于从外壳执行外部命令)。
默认情况下,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("%sn", buffer);}
(未测试)
当您编译程序时,必须
-luci在编译命令中添加
gcc
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)