Я реализовал HTTP-сервер, используя Poco-библиотеки.
Он запускает службу REST и все работает нормально.
HTTP-сервер работает как демон в системе Linux.
Теперь я хочу внедрить функциональность в службу REST, которая перезапускает самого демона HTTP-сервера.
я использую popen
вызвать команду оболочки для перезапуска демона. Демон перезапускается, и я вижу через netstat -plten
а также ps -aux
что сервер получает новый pid и прослушивает порт 80. Но он не обрабатывает любые входящие запросы HTTP.
Если я наберу команду оболочки непосредственно в терминале, демон перезапустится, получит новый pid и обработает входящие HTTP-запросы.
Что может быть не так?
РЕДАКТИРОВАТЬ
Я также попытался вызвать команду оболочки с system(command);
а также std::thread(std::system,command).detach();
но результат тот же.
Я нашел решение.
При создании Poco::Net::HTTPServer
Я создаю Poco::Net::ServerSocket
согласиться с этим. Мне нужно закрыть этот сокет перед перезапуском демона.
Других решений пока нет …