URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9035
[ Назад ]

Исходное сообщение
"QProcess + Shell + dh_make"

Отправлено iks_ , 14-Фев-11 23:21 
Есть класс для вызова
#include "getPogram.h"

getPogram::getPogram(){}


void getPogram::run()
{
    myProcess = new QProcess(this);
    connect(myProcess, SIGNAL(readyReadStandardOutput()), this, SLOT(slotDataOnStdout()));
    connect(myProcess, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(slotStandartError()));
    myProcess->setReadChannel(QProcess::StandardError);
    myProcess->start(toTxtProg);
    exec();
    return;
}

void getPogram::slotDataOnStdout()
{
    QStringList lst;
    lst.append(myProcess->readAllStandardOutput());
    emit otvetClass(lst);
    myProcess->exitStatus();
    return;
}


void getPogram::slotStandartError(){
    QStringList lst;
    lst.append(myProcess->readAllStandardError());
    emit otvetClass(lst);
    myProcess->exitStatus();
    return;
}


из другого класса вызываю

//-- старт программа
void twoClass::startZaprosClass(){
    QFile fileTemp(strPachProg+"/temp");
    if(fileTemp.open(QIODevice::WriteOnly))
    {
        QTextStream Out(&fileTemp);
        Out << "#!/bin/sh" << endl
            << "cd " << strPachProg << endl
            << "tar cvpzf " << strNamePacet << "_" << strNumPacet << ".orig.tar.gz " << strNamePacet << "-" << strNumPacet  << endl
            << "rm -r " << strNamePacet << "-" << strNumPacet << "/*" << endl
            << "echo \"-----=====-----\"" << endl
            << "echo \"Archive " << strNamePacet << "_" << strNumPacet << ".orig.tar.gz harvested\"" << endl
            << "echo \"-----=====-----\"" << endl
            << "cd "  << strNamePacet << "-" << strNumPacet << endl
            << "export DEBFULLNAME=\"" << strNameKey << "\"" << endl
            << "dh_make -s -e " << strMailKey << endl
            << "exit 0" << endl;
    }
    fileTemp.close();

    txtOtvetProg = new QTextEdit();
    
    goProg = new getPogram;
    goProg->moveToThread(goProg);
    connect(goProg, SIGNAL(otvetClass(QStringList)), this, SLOT(otvetZaprosClass(QStringList)));
    goProg->returnProgram("sh " + strPachProg + "/temp");
    goProg->start();
    return;
}

void twoClass::otvetZaprosClass(QStringList otv){
    foreach(QString str, otv) {
        txtOtvetProg->append(str);
    }
    return;
}

Вопрос такой, как в Shell скрипте написать автоматический ответ, когда идет последний запрос потверждения, в dh_make, проще сказать чтоб он не ждал когда нажмется <Enter> как это делается в терминале а проходил автоматом.
-----------------------------
Почему решил через Shell пройти с ним проще зайти в нужную папку и уже в ней вызвать прогу, средствами QT я этого не нашел что-то.
Програ пишется на Linux


Содержание

Сообщения в этом обсуждении
"QProcess + Shell + dh_make"
Отправлено iks_ , 15-Фев-11 13:22 
Вопрос решился изменением строки
<< "dh_make -s -e " << strMailKey << endl

на
<< "echo | dh_make -s -e " << strMailKey << endl