日期:2014-05-16  浏览次数:20689 次

Linux中,如何在网络状态改变的时候让系统自动执我的 .c 文件?
Linux中,如何在网络状态改变的时候让系统自动执我的 .c 文件?
就是说: 如果网络从未连接到连接成功的时候 就执行一次 .c 文件 获得IP 和MAC?
代码检测网络状态的话可能效率不好, 怎么样才能让系统 在网络状态从未连接到连接的时候就 执行我的 .c 文件呢?

------解决方案--------------------
共享内存、信号、信号量、管道等技术都可以实现
------解决方案--------------------
需要编写一个任务程序A,在状态改变时执行你的.c可执行文件,例如system("abc.c");

有一个问题要考虑的是,状态改变由谁检测?
如果是A检测,那么A可以用无限循环,信号量来等待事件发生;
如果是另外一个任务检测,那么得到的结果要交给A,可以用共享内存、信号、信号量、管道、文件等技术传递。

------解决方案--------------------
if(网络连接成功 )


网络从未连接到连接成功的时候,获取地址?
你可以写一个线程,不断尝试连接外边的网站IP,如果成功则网络连接ok,此时就获取本机地址。

C里应该没有网络状态检测,但应该有一些类库可以实现网络状态检测。


------解决方案--------------------
网络状态改变是什么意思 是局网能通还是外网能通?
------解决方案--------------------
那就写个shell 判断ping通某个外网地址的时候就是外网连通的时候, 那就执行你的c程序