- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想用C程序来获取网络接口(interface)的ip是手动设置的还是通过dhcp设置的。
我试过使用下面的代码,它在 Debian 中有效,但在 OpenWrt 中无效。我想知道如何在 OpenWrt 中编写一个 C 程序来执行此操作。我试过使用这个:
#include <stdio.h>
int main(void)
{
FILE *fp;
char buffer[80];
fp=popen("cat /etc/network/interfaces |grep ^iface\\ br-lan | awk -F ' ' '{print $4}'","r");
fgets(buffer, sizeof(buffer), fp);
printf("%s", buffer);
pclose(fp);
}
这段代码在 Debian 中可以运行,但在 OpenWrt 中不能正常运行,所以我想知道如何编写一个程序来获得相同的结果。
最佳答案
对于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 中可用的所有网络接口(interface),您可以使用以下命令:
$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);
}
(未测试)
当你编译你的程序时,你必须在编译命令gcc
中添加-luci
关于c - 如何判断eth0模式是static还是dhcp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16085222/
当我使用 web3.eth.sign() 方法和 web3.eth.accounts.sign() 方法对字符串进行签名时。两个签名的结果值不同。我不知道为什么这两个结果不同。 我正在使用最新的 we
据我了解,在使用 web3.eth.accounts.create() 时,它不会将帐户添加到链中(我正在使用 ganache-cli 进行测试),但 web3.eth.personal.newAcc
我是 solidity 的新手,正在通过一个简单的网络应用程序探索它。我正在尝试制作一个候选人投票网络应用程序,它接受一些细节和一个按钮,该按钮应将细节部署到智能合约创建的 block 中。当我尝试在
现在,我遇到了一种情况,我在 Linux 系统公开的单个开发上别名了很多 ip。这个开发者可以说是 ethX。 现在在 ethX 上,我从子网添加了许多 ip。 问题: 看来端口范围是 ethx 上的
我调查并玩过corda-settler项目。根据文档中的建议,我创建了一个自定义 ethereum模块(大纲类似于 ripple 模块),提供使用 ETH 中的账外付款结算债务的选项.实现 (http
我正在寻找最有效的下载路径,并不断下载以太坊网络上的每个智能合约。 由于我已经编程了几年,我一直在考虑使用 cURL 来实现这一点。但我知道这可能已经非常过时了,因为应该可以使用区 block 链以某
我正在尝试创建一个可以进行以太坊交易的网站。 如果我使用 eth.sendTransaction({from:sender, to:receiver, value: amount}) 进行以太坊交易,
从传递给智能合约的网站表单提交 (php) 中获取 ETH 地址的最佳方式是什么,以便智能合约可以将一些新类型转换的 token 发送到 php 表单中收集的 ETH 地址? 在网站上提交 ETH 地
当我运行程序“eth.exe”(来自以太坊前沿网站)时,系统提示我输入密码。我输入了密码,但即使在几个小时后我也没有收到任何命令行提示。我只是得到一个闪烁的光标,它在几个小时后仍然存在。 Screen
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使它仅关注editing this post的一个问题。
我正在关注tutorial here that uses testrpc with web3.js 。安装 ethereumjs-testrpc 和 web3js 软件包后,testrpc 启动,提供
我想发送一些 ETH 到智能合约地址 Test.deployed().then(function(instance) {return instance.contribute("0x1e0c326f4f
我们正在设置类似于区块链浏览器的东西,但我们的 Eth 全节点似乎缺少某些块的交易信息。 例如,我可以查询 eth.getTransaction 但 eth.getTransactionReceipt
我通过从 nfqeueue 获取数据包来实现桥接,打开到 eth 卡的套接字并发送数据包(我在中间有一些逻辑)。 我是 cpp 的新手,水平很低,所以我可能会问一些愚蠢的问题。 如果我理解正确,我不应
我整个早上都在互联网上搜索答案,但我无法让它工作。如果你能帮助我,我将不胜感激。 我的设置:服务器:eth1:192.168.6.2(连接到互联网 -> WAN)eth0: 192.168.0.1 (
我无法配置我的网络以使用友好名称访问我的设备。这是我的情况: LAN ^ ----¦---- USB/ETH ------------------ ¦ PC ¦ ------
我正在尝试让我的钱包地址余额呈现在我的前端。这是我目前所拥有的。 const [balance, setBalance] = useState(""); const handleWalletBalan
我正在尝试在 Ubuntu 20.04.2 上使用文档安装 eth-brownie。 我已经转了几个小时,试图做消息告诉我的一切。 pipx 安装 eth-brownie 给出: 未安装到现有目录“/
有没有办法将 ETH 添加到 Ganache 账户?我知道我通常可以通过重新启动 ganache cli 来刷新帐户,但我使用的是 --db 选项,这意味着帐户是持久的。因此,它们很快就会枯竭。 最佳
根据文档,我应该能够使用 coinbase API 购买 ETH(请参阅 Place buy order )。 现在,看起来我得到了 BTC。 private static void placeNon
我是一名优秀的程序员,十分优秀!