我正在Qt写一个服务器应用程序。并拥有检查可用服务的Loader类。因此,为了成功启动服务器,我需要检查Loader
,例如以编程方式,MySQL服务是否正常运行。我发现使用QProcess是与此相关的smth但是
当我编码以下内容时:
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));
我收到一个空字符串,你能帮忙检查一下服务是否开始了吗?
答案 0 :(得分:2)
我不明白你的问题。你已经在你的代码中了:
if(!mysql.waitForStarted())
qDebug() << "Not loaded...";
这清楚地告诉你你的mysql程序是否已启动。
但是如果我可以给你一个建议,可以通过QProcess使用mysql放弃你的想法。这可以启动mysql服务器,但仅此而已。查看QSqlDatabase的Qt文档。这允许您直接连接到服务器。尝试使用QSqlDatabase打开()数据库可以提供比您尝试使用的QProcess拐杖更多的信息。
编辑:将'readAll'更改为'readAllStandardError'。你会看到一些有趣的东西。