Russian Qt Forum

Qt => Общие вопросы => Тема начата: pjatachok от Июль 25, 2010, 16:48



Название: как получить статус процесса windows?
Отправлено: pjatachok от Июль 25, 2010, 16:48
просто выполнить команду я уже могу

system("net start apache2.2"); // хотя может в qt есть другой способ?

а как получить статус процесса и сохранить в переменной?
что-то типа

QString response = system("sc query apache2.2");

но sc query возвращает кучу лишнего, да и system возвращает int


Название: Re: как получить статус процесса windows?
Отправлено: SimpleSunny от Июль 25, 2010, 16:56
QProcess


Название: Re: как получить статус процесса windows?
Отправлено: pjatachok от Июль 25, 2010, 20:54
Цитировать
   
    QProcess test;
    test.start("tasklist /v /fo csv | find \"httpd.exe\"");

    QByteArray result = test.readAll();
    qDebug() << result;

подскажите, как получить выдачу в result?


Название: Re: как получить статус процесса windows?
Отправлено: SimpleSunny от Июль 25, 2010, 21:08
К примеру так http://www.prog.org.ru/topic_12443_0.html или так http://www.prog.org.ru/topic_10981_0.html
Было еще несколько подобных тем, для их просмотра можно воспользоваться поиском.


Название: Re: как получить статус процесса windows?
Отправлено: pjatachok от Июль 25, 2010, 22:24
спасибо
сделал через отдельный батник - работает
но всё же хочется сделать без батников, поэтому попробовал вторым методом:

Цитировать
    QProcess test;
    test.start("tasklist /v /fo csv | find \"httpd.exe\"");

    QByteArray readArray;
    test.write(readArray.data(),readArray.size());
    test.waitForBytesWritten();

    qDebug() << readArray.size();

в ответ получаю:
Цитировать
0
QProcess: Destroyed while process is still running.

объясните пожалуйста саму суть ошибки
реализацию попробую составить сам


Название: Re: как получить статус процесса windows?
Отправлено: crossly от Июль 27, 2010, 15:06
QProcess не умеет с пайпами  работать .... используй 
Код:
void QProcess::setStandardOutputProcess ( QProcess * destination )