Базовая обработка сигналов в C ++

Это довольно простой сценарий, но я ' м не найти слишком много полезных ресурсов. У меня есть программа на C ++, работающая в Linux, которая выполняет обработку файлов. Читает строки, выполняет различные преобразования, записывает данные в базу данных. Есть определенные переменные (хранящиеся в базе данных), которые влияют на обработку, которую я сейчас читаю на каждой итерации, потому что я хочу, чтобы обработка была как можно более актуальной, но небольшая задержка - это нормально. Но эти переменные меняются довольно редко, а чтение со временем обходится дорого (10 миллионов плюс строк в день). Я мог бы распределить чтения для каждых n итераций или просто перезапустить программу при изменении переменной, но это кажется хакерским.

Вместо этого я бы хотел, чтобы программа запускала повторное чтение переменные при получении SIGHUP. Все я' Когда я читал об обработке сигналов, я говорю о библиотеке сигналов C, которую я не знаю, как связать ее с классами моей программы. Библиотеки сигналов Boost, похоже, больше предназначены для межобъектного взаимодействия, чем для обработки сигналов ОС.

Кто-нибудь может помочь? Похоже, это должно быть невероятно просто, но я уже довольно ржавый с C ++.

12
задан KernelM 28 September 2010 в 23:00
поделиться