The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"QProcess + Shell + dh_make"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"QProcess + Shell + dh_make"  +/
Сообщение от iks_ (ok) on 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

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "QProcess + Shell + dh_make"  +/
Сообщение от iks_ (ok) on 15-Фев-11, 13:22 
Вопрос решился изменением строки
<< "dh_make -s -e " << strMailKey << endl

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру