0

Qtでサーバーアプリを書いています。利用可能なサービスをチェックするローダークラスがあります。したがって、サーバーを正常に起動するには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));

空の文字列を受け取りました。サービスが開始されたかどうかを確認するのを手伝ってもらえますか?

4

1 に答える 1

2

私はあなたの問題を理解していません。あなたはすでにあなたのコードに持っています:

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

これにより、mysql プログラムが開始されたかどうかが明確にわかります。

しかし、私があなたにアドバイスを与えることができるとしたら、QProcess 経由で mysql を使用してあなたのアイデアをドロップしてください。これで mysql サーバーを起動することはできますが、それ以上のことはありません。QSqlDatabase の Qt ドキュメントを参照してください。これにより、サーバーに直接接続できます。QSqlDatabase でデータベースを open() しようとすると、使用しようとしている QProcess クラッチよりもはるかに多くの情報が得られます。

編集:「readAll」を「readAllStandardError」に変更します。興味深いものが表示されます。

于 2013-08-28T08:39:49.170 に答える