Это довольно простой сценарий, но я не нахожу слишком много полезных ресурсов. У меня есть программа на C++, работающая в Linux, которая обрабатывает файлы. Читает строки, выполняет различные преобразования, записывает данные в базу данных. Существуют определенные переменные (хранящиеся в базе данных), которые влияют на обработку, которую я сейчас читаю на каждой итерации, потому что я хочу, чтобы обработка была как можно более актуальной, но небольшое отставание в порядке. Но эти переменные меняются довольно редко, и чтение со временем дорого (10 миллионов плюс строки в день). Я мог бы пробел в чтениях каждые n итераций или просто перезапустить программу при изменении переменной, но они выглядят хакерскими.Основная обработка сигналов в C++
Вместо этого я хотел бы, чтобы программа запускала перечитывание переменных, когда она получает SIGHUP. Все, что я читаю об обработке сигналов, говорит о библиотеке сигналов С, и я не уверен, как привязать ее к классам моей программы. Библиотеки сигналов Boost, похоже, больше связаны с межобъектной связью, чем с сигналами ОС.
Может ли кто-нибудь помочь? Кажется, это должно быть невероятно просто, но я довольно ржавый с C++.
Oh duh. Я полностью передумал и забыл, что переменные сигнала - это то, что я хочу, а не прямой вызов. * headdesk * – KernelM
Если вы хотите быть совместимым с стандартом, убедитесь, что квалифицируйте обработчик сигнала как «extern» C «' –
@R Samuel: Это отличная точка.Я даже не думал о «extern» C «, так как я писал C-код, но OP понадобится! –