Абсолютно самый быстрый способ перезагрузить свои конфигурационные файлы для Squid - это отправить демону SIGHUP с помощью kill()
. Это то, что делает squid -k reconfigure
, что, в свою очередь, то, что /etc/init.d/squid reload
, скорее всего, делает.
Проблема с этим подходом заключается в том, что вам нужно каким-то образом обнаружить идентификатор процесса демона squid в вашем C-коде. PID обычно хранится в текстовом файле где-то под /var/run
(/var/run/squid.pid
в моем случае), который вы можете прочитать - это избавляет вас от необходимости просматривать таблицу процессов, но это все еще в некотором беспорядке .
Учитывая, что /etc/init.d/squid
также может выполнять пользовательские операции и что вы не обязаны перезагружать демона каждую секунду или около того, я бы сказал, что вам следует использовать свое текущее решение. Если вас не волнует возвращаемое состояние скрипта, вы также можете использовать общий подход fork()
и exec()
, который является асинхронным и, следовательно, быстрее от Точка зрения вашего приложения.