Всем привет, пишу кросплатформенную программу, которая должна работать как демон на Linux и как сервис на Windows.
Есть несколько варинатов событий, реализованных через флаги. Все обрабатываются нормально за исключением флагов ответственных за установку сервиса/демона.
Ситуация такая, что при этом программа доходит до метода install ( из класса QtServiceController ) и при первой итерации этот метод не вызывается, при второй итерации он вызывается ( после обработки метода инсталл должен вызываться метод start из того же класса ), доходит до метода start ( из класса QtServiceController ) и его уже не обрабатывает, по крайней мере корректно, а уходит в бесконечный цикл. Выглядит так будто она вызывает себя повторно, и проходит все этапы обработки флага install, начиная с main. Часть кода, о которой я говорю выглядит следующим образом:
if ( !( ptrCtl->isInstalled() ) ) {
qDebug() << ptrCtl->serviceName() << " was not installed ==================== >>>";
qDebug() << ptrCtl->serviceName()
<< ( ( ptrCtl->install( getProgName() ) )
? " was successfully" : " was not " ) << "installed";
qDebug() << "before " << ptrCtl->serviceName() << "start";
qDebug() << getProgName()
<< ( ( ptrCtl->start() )
? " was" : " was not " ) << "started";
Строка:
qDebug() << ptrCtl->serviceName() << " was not installed ==================== >>>";
добавлена чтобы сделать вывод программы более читаемым.
Вывод выглядит так
"d_server" was not installed ==================== >>>
"d_server" was successfully installed
"d_server" was not installed ==================== >>>
....
"d_server" was not installed ==================== >>>
При этом аргумент argc в main( int argc, char **argv ) при первой итерации равен 2, при последующих - 4.
Мой вопрос: как сделать так, чтобы запускался метод start ( класс QtServiceController ) и программа не уходила в бесконечный цикл.
Заранее спасибло за помощь. Весь код не выкладывал, что бы не занимал много места, естественно при необходимости могу выложить.