Я нюхаю пакеты WiFi для RSSI (меня интересует пробный запрос и нулевые данные, временная метка и MAC-адрес источника), и мне нужно сохранить результаты в pcap
файлы для дальнейшей обработки.
Проблема в том, что мне нужно разделить информацию на несколько разных файлов, создавая один файл в час.
У меня нет идеи, как проверить истекшее время в моей программе, кроме многопоточности (while(1)
, sleep()
и проверить с clock()
функция). Я использую Ubuntu, но целевой платформой является маршрутизатор с установленным Linux OpenWrt.
Мой первый концерт — проблемы с кросс-компиляцией + pthread.h
, thread.h
или что-то еще, или, может быть, не должно быть никаких проблем в OpenWrt?
И другая сторона вопроса — не слишком ли сложно использовать многопоточность для этой глупой проблемы?
Может быть есть другие решения? (т. е. небольшое решение псевдомультипоточности или несколько простых приемов)?
Вы должны использовать Cron:
Cron — системный демон, используемый для выполнения желаемых задач (в фоновом режиме) в назначенное время.
По сути, вы определяете скрипт, который будет выполняться каждый час, с помощью следующего синтаксиса:
0 */1 * * * /path/to/script.sh
Проверьте здесь для получения дополнительной информации: https://help.ubuntu.com/community/CronHowto
Для конкретной настройки OpenWrt, проверьте здесь: http://martybugs.net/wireless/openwrt/cron.cgi
Для вашего конкретного случая вы можете использовать следующий дизайн:
Для обзора методов IPC, чтобы начать, проверьте эта статья в Википедии.
Для конкретных реализаций вы можете использовать Boost.Interprocess, Розетки, трубы, и другие.
Других решений пока нет …