2016-01-07 3 views
0

Я реализовал HTTP-сервер, используя Poco-библиотеки. В нем работает служба REST, и все работает отлично.Перезапустить HTTP-сервер Poco

HTTP-сервер работает как демон в системе Linux.

Теперь я хочу реализовать функциональность в службе REST, которая перезапускает сам демон HTTP-сервера.

Я использую команду popen, чтобы вызвать команду оболочки для перезапуска демона. Демон перезапускается, и я вижу через netstat -plten и ps -aux, что сервер получает новый pid и прослушивает порт 80. Но он не обрабатывает входящие HTTP-запросы.

Если я ввожу команду оболочки непосредственно в терминал, демон перезапускается, получает новый pid и обрабатывает входящие HTTP-запросы.

Что может быть неправильным?

EDIT

Я также попытался вызвать команду оболочки с system(command); и std::thread(std::system,command).detach();, но результат тот же.

+0

Тот же результат с портом выше 1024? – Marged

+0

Вы проверяли системные журналы на все, что указывало бы на то, что процесс вызова popen запущен в проблему с разрешениями? – emsworth

+0

@Marged То же самое происходит, если я переключаюсь на порт 8080. –

ответ

0

Я нашел решение.

При создании Poco::Net::HTTPServer я создаю Poco::Net::ServerSocket, чтобы согласиться с этим. Мне нужно закрыть этот сокет перед перезапуском демона.

Смежные вопросы