2013-08-28 6 views
0

Я пишу серверное приложение в Qt. и имеет класс Loader, который проверяет наличие доступных сервисов. Таким образом, чтобы успешно запустить сервер, мне необходимо проверить через Loader, например. программным образом, работает ли сервис MySQL или нет. Я обнаружил, что использование QProcess является чем-л, который связан с этим, но когда я кодируюсь следующим образом:Проверить наличие дополнительных услуг

QProcess mysql; 
    mysql.start("mysql", QStringList() << "-uroot -ppassword"); 

    if(!mysql.waitForStarted()) 
     qDebug() << "Not loaded..."; 

    mysql.write("show databases;"); 
    mysql.closeWriteChannel(); 

    if(!mysql.waitForFinished()) 
     qDebug() << "Haven't finished yet!"; 

    QByteArray result = mysql.readAll(); 
    QString str(result); 
    qDebug("%s", qPrintable(str)); 

Я получаю пустую строку, вы могли бы помочь проверить, запущены ли услуги или нет?

ответ

2

Я не понимаю вашу проблему. Вы уже в своем коде:

if(!mysql.waitForStarted()) 
     qDebug() << "Not loaded..."; 

Это ясно говорит о том, была ли запущена ваша программа mysql.

Но если я могу дать вам совет, оставьте свою идею с помощью mysql через QProcess. Это нормально для запуска сервера mysql, но не более того. Изучите Qt-документы для QSqlDatabase. Это позволяет напрямую подключиться к серверу. Попытка открыть() вашу базу данных с помощью QSqlDatabase может предоставить вам гораздо больше информации, чем костыль QProcess, который вы пытаетесь использовать.

Редактировать: Измените «readAll» на «readAllStandardError». Вы увидите что-то интересное.

+0

Хорошо, спасибо. Фактически, я подключил свой сервер через QSqlDatabase. Однако это не сработает, пока не запустится сервис для MySQl. – elgolondrino

+0

Но вы запускаете службу с помощью mysql? 'mysql' - это только интерфейс для подключения к серверу mysql. Чтобы запустить сервер, вам нужно выполнить QProcess с помощью mysqld – Greenflow

+0

Я пробовал, но никакого результата. – elgolondrino

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