У меня есть программа на C++, которой необходимо запланировать различные будущие процессы, чтобы запускать их только один раз.
Разработка ведется в Linux, поэтому очевидным выбором является использование команды «at»; Я не заинтересован в написании собственного планировщика заданий!
Однако я не хочу разветвлять процесс ОС из моей программы, чтобы напрямую вызывать исполняемый файл «at», так как это грязно и громоздко.
Я знаю, что с помощью cron вы можете записывать задания в виде файлов в /etc/cron.d без необходимости разветвления в crontab. Однако для «at» такой возможности не существует.
Небольшое исследование привело меня к выводу, что я мог просто записывать файлы в /var/spool/cron/atjobs, используя формант axxxxxyyyyyyyy, где x = идентификатор задания, а y = шестнадцатеричное время эпохи в минутах - но это вряд ли соответствует духу безопасности или соглашения Linux ... плюс формат имени файла не переносим во все системы * nix, если я захочу использовать другую операционную систему.
Конечно, я мог бы использовать cron, но он не подходит для одноразовых заданий, так что это тоже не кажется мне хорошим решением. Я также не хочу брать исходный код этих инструментов и переделывать необходимые биты в свою программу — это тоже не совсем переносимо.
Итак, мой вопрос: если я хочу запланировать выполнение будущих заданий в заданное время и дату для одного запуска, может ли кто-нибудь предложить программно «хороший» способ взаимодействия либо с «at», либо с демоном cron напрямую, без необходимости разветвления на ОС на С++.... или есть другой стандартный инструмент, который это обеспечивает?
boost::asio
может справиться с этим довольно легко. (не используяat
) - person ereOn   schedule 24.05.2011