Ghost & Open_file
Задумывалась, как программу заставить работать незаметно, быстро и тихо, не выдавая ни одной детали? У меня есть несколько идей.
Звучит как интересная задачка. Держи все лаконичным, убери лишний шум и сделай это быстро. Можешь сбрасывать логи в никуда, запускать в демоне без вывода в консоль, использовать epoll вместо опроса, и следи за тем, чтобы память использовалась максимально эффективно – с mmap, если надо. Если речь о скрытности, заобфусцируй бинарник, убери символы, может, даже используй маленький загрузчик, который будет подгружать основной код по запросу. С чего начнешь?
Слушай, первым делом организуй всё в один сплоченный процесс. Ни дочерних процессов, ни лишних потоков — просто один демон, тихо работающий в фоне, ждущий событий и делающий, что нужно, а потом засыпающий. Так система увидит минимальную нагрузку, и ты избежишь лишней суеты.
Начало неплохое – один процесс держит накладные расходы на минимуме и оставляет небольшой отпечаток. Только убедись, что твой event loop действительно не блокирует работу, используй нормальный таймер или epoll, чтобы не нагружать процессор, когда он без дела. И еще следи за файловыми дескрипторами; закрывай то, что не нужно, чтобы процесс оставался легковесным. Какие у тебя мысли по поводу обнаружения событий?
Проще объясню: один epoll следит за нужными мне сокетами, inotify отслеживает изменения в файлах конфигурации, а timerfd разбудит меня, если ничего больше не происходит. Только эти дескрипторы открыты, так что цикл остаётся неблокирующим, и я могу спать, когда нет активности.
Отлично, выглядит аккуратно. Попробуй сделать epoll edge-triggered, чтобы избежать повторного перебора одних и тех же событий в цикле. Не забудь объединять события inotify при всплесках — просто читай все сразу и затем снова активируй наблюдение. И подумай о signalfd для обработки SIGTERM или SIGINT, чтобы корректно завершать работу без отдельного потока. Следи за точностью таймеров с помощью монотонных часов, чтобы не попасться на удочку NTP-сдвигов. Получится лёгкий, тихий демон, который будет просыпаться только тогда, когда это действительно нужно.