在程序中检查网络状态和控制PPP

标签 c linux networking embedded ppp

所以我在 Linux 下使用蜂窝调制解调器运行 PPP。我正在编写的程序需要在发送任何数据之前知道链接是否处于事件状态。

我要检查哪些选项

  • 如果链接可用
  • 如果它路由到我控制的服务器(它不像我之前说的那样去互联网)

此外,重新启动它的最佳方式是什么 - 我希望程序控制它何时启动和停止,所以我认为 init.d 不合适。使用 system() 似乎没有提供 PID,除了 fork()exec??() 之外还有其他选择吗> 电话?

ARM 上 Linux 上的 C(使用 buildroot 的自定义分发版)。

最佳答案

您可以使用 pppd 的 ip-up 脚本功能让它在 IP 接口(interface)启动并准备就绪时执行程序。详情在pppd(8) man page - 搜索“ip-up”。

要重新启动 pppd,请使用 linkname 参数设置一个已知的 pid 文件名 (/var/run/ppp-name.pid)。还可以使用 persist 选项。当你想重新启动 pppd 时,发送 SIGHUP 信号。同样,这在手册页中有描述。

关于在程序中检查网络状态和控制PPP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51296/

相关文章:

c - 变量值不变

c - C 中 scanf 函数中的字符数组指针没有 & 符号

linux - 使用 gdrive 从 google drive 按名称删除文件夹

networking - 学习计算机网络的资源

android - 主机切换网络后如何刷新安卓模拟器网络连接?

c - 当我对结构进行浅拷贝时,灵活的数组成员不会被复制

c++ - c/c++ 和 objective c ios

linux - ELB、代理协议(protocol)和 iptables

linux - 远程 Linux 服务器到远程 linux 服务器目录复制。如何?

java - 替代 InetAddress 类中的 isReachable