linux嵌入式编程方法-网络设置

linux嵌入式编程方法-网络设置,linux,embedded-linux,Linux,Embedded Linux,我可能在一般概念中遗漏了一些东西,因为我搜索了,但没有找到答案。。。 我正在用嵌入式Linux,C语言编写一个GUI应用程序。我想允许用户更改网络设置: DHCP客户端模式-我在文件系统上有带uDHCPc应用程序的busybox 如果禁用DHCP,则配置IP、子网和网关 我已经发现IP、子网和网关可以在套接字上使用ioctl进行更改。 我发现从我的应用程序激活uDHCPc的唯一方法是调用函数:system(…)来执行shell命令,这种方法就像运行shell sript来运行ifconfig

我可能在一般概念中遗漏了一些东西,因为我搜索了,但没有找到答案。。。 我正在用嵌入式Linux,C语言编写一个GUI应用程序。我想允许用户更改网络设置:

  • DHCP客户端模式-我在文件系统上有带uDHCPc应用程序的busybox
  • 如果禁用DHCP,则配置IP、子网和网关
我已经发现IP、子网和网关可以在套接字上使用ioctl进行更改。 我发现从我的应用程序激活uDHCPc的唯一方法是调用函数:system(…)来执行shell命令,这种方法就像运行shell sript来运行ifconfig来获取/设置ip地址一样

在嵌入式linux中,从我的C应用程序运行“脚本活动”(DHCP启用/禁用;读/写系统设置)的正确/常见方式是什么


谢谢。

DHCP是一种在网络上工作的协议。它在用户空间程序(如uDHCPc)中实现。没有内核实现,也没有办法使用ioctls实现。system()函数可以工作,但它也会生成一个中间shell。如果您想提高效率,您可以自己使用fork()和exec()将uDHCPc作为子进程调用

DHCP是一种在网络上工作的协议。它在用户空间程序(如uDHCPc)中实现。没有内核实现,也没有办法使用ioctls实现。system()函数可以工作,但它也会生成一个中间shell。如果您想提高效率,您可以自己使用fork()和exec()将uDHCPc作为子进程调用

用我自己的进程包装uDHCPc是否有效,该进程将捕获改变其状态(启用/禁用)的信号/消息并执行它?或者最好重新编译uDHCPc(或DHCP客户机的任何其他实现),并将信号/消息机制集成到客户机中?方法之间有区别吗?也许最好在init下使用不同的运行级别运行它。然后,您可以切换运行级别。用我自己的进程包装uDHCPc是否有效,该进程将捕获用于更改其状态(启用/禁用)和执行()的信号/消息?或者最好重新编译uDHCPc(或DHCP客户机的任何其他实现),并将信号/消息机制集成到客户机中?方法之间有区别吗?也许最好在init下使用不同的运行级别运行它。然后你可以切换运行级别。