在嵌入式Linux中调度文件操作

时间:2014-03-24 15:03:34

标签: c++ multithreading libpcap openwrt

我正在为RSSI嗅探WiFi数据包(我的兴趣是探测请求和数据空,时间戳和源mac地址),我需要将结果保存在pcap文件中以便进一步处理。

问题是我需要将信息分成多个不同的文件,每小时创建一个文件 我不知道如何检查我的程序中的已用时间,除了多线程(while(1)sleep()和检查clock()函数)。我正在使用Ubuntu,但目标平台是安装了Linux OpenWrt的路由器。

我的第一场演唱会是交叉编译+ pthread.hthread.h或其他问题,或者OpenWrt中应该没有问题?

问题的另一面 - 使用多线程来解决这个愚蠢的问题是不是太复杂了? 也许有其他解决方案? (即一个小的伪多线程解决方案,或一些简单的技巧)?

1 个答案:

答案 0 :(得分:2)

你应该使用Cron:

  

Cron是一个系统守护程序,用于在指定时间执行所需任务(在后台)。

基本上,您使用以下语法定义要每小时执行的脚本:

0 */1 * * * /path/to/script.sh

点击此处了解详情:https://help.ubuntu.com/community/CronHowto

对于OpenWrt特定设置,请点击此处:http://martybugs.net/wireless/openwrt/cron.cgi

对于您的具体情况,您可以使用以下设计:

  • Cron作业每隔一小时触发一次
  • 执行自定义脚本并使用IPC机制通知主应用程序。
  • 主应用程序在writter处理程序中有一个专用函数,用于执行重置writeter所需的操作(其他函数调用,文件删除,创建新文件等)。

enter image description here

有关开始使用的IPC方法的概述,请查看this Wikipedia article

对于具体实施,您可以使用Boost.InterprocessSocketsPipes等。