Russian Qt Forum

Qt => Общие вопросы => Тема начата: Hrundel от Октябрь 16, 2013, 18:11



Название: [РЕШЕНО] Получить вывод процесса в программу (Linux)
Отправлено: Hrundel от Октябрь 16, 2013, 18:11
Всем привет,

у меня есть следующая необходимость:
в /usr/lib/nagios/cgi лежит исполняемый status.sgi который возвращает веб-страницу
в консоли приходится это делать двумя коммандами

cd /usr/lib/nagios/cgi/
./status.cgi

потом на выводе идет код в html формате

мне нужно перехватить этот код в программу
написал вот так, но не работает:

Код:
    QProcess cgiStream;

    cgiStream.start("cd /usr/lib/nagios/cgi/");
    cgiStream.write("./status.cgi");
    cgiStream.waitForFinished();
    qDebug() << "cgi output: " << cgiStream.readAllStandardOutput();

будьте добры - объясните как правильно.


Название: Re: Получить вывод процесса в программу (Linux)
Отправлено: Alex Custov от Октябрь 16, 2013, 18:30
   cgiStream.start("cd /usr/lib/nagios/cgi/");
    cgiStream.write("./status.cgi");

жесть

Если cd точно нужно делать, то как-то так:

Код
C++ (Qt)
cgiStream.setWorkingDirectory("/usr/lib/nagios/cgi");
cgiStream.start("./status.cgi");


Название: Re: Получить вывод процесса в программу (Linux)
Отправлено: Hrundel от Октябрь 16, 2013, 20:03
Ну, не работал я с процессами ни разу  ;D

Спасибо. Уже что-то.


Название: Re: Получить вывод процесса в программу (Linux)
Отправлено: Hrundel от Октябрь 17, 2013, 09:43
переделал но все-равно не работает

Код:
QProcess cgiStream;

QString path = QDir::currentPath();
QStringList commands("./cgistream.sh");

cgiStream.start(path, commands);
cgiStream.waitToFinished();

qDebug() << cgiStream.readAllStandardOutput();

cgistream.sh содержит команды

Код:
  #!/bin/sh

export REMOTE_USER=nagiosadmin
export REQUEST_METHOD='GET'
export QUERY_STRING='host=all&csvoutput'

cd /usr/lib/nagios/cgi
./status.cgi



Название: Re: Получить вывод процесса в программу (Linux)
Отправлено: Old от Октябрь 17, 2013, 09:52
Нужно запускать shell (/bin/sh) и в качестве параметра передавать имя скрипта.


Название: Re: Получить вывод процесса в программу (Linux)
Отправлено: Hrundel от Октябрь 17, 2013, 10:03
Old, большое спасибо, все сразу заработало !!!  :)


Название: Re: Получить вывод процесса в программу (Linux)
Отправлено: Fat-Zer от Октябрь 17, 2013, 23:08
Нужно запускать shell (/bin/sh) и в качестве параметра передавать имя скрипта.
и без этого должно работать... если chmod +x сделан, нет хитроумных способов монтирования и пробел перед хешбенгом — опечатка...
ЗЫ: хотя учитывая всё это с sh надёжней...