Название: QProcess и QThreads Отправлено: Disa от Июнь 03, 2013, 14:30 Добрый день.
Требуется запустить 3и сторонних паралелльно работающих процесса и закрывать их по надобнсти. Процессы работают бесконечно, пока не получат Ctrl+C (если запущены из терминала) или соответсвенно "kill". Почему-то просто в слоте: Код
выдает captureScreenProcess.state() = 1, captureScreenProcess.errorString() "Unknown error" и ничего не происходит. Если делать через execute или startDeatached, все работает. Но execute вешает GUI (т.к. процесс бесконечный), а если startDeateched, нужно управлять через полученный PID. Добавил новый поток и сделал в слоте вот так: Код
и по прежнему происходит ровно тоже самое что и раньше. PS: Вопрос - если делать отдельный класс унаследованный от QThread, который должен запускать этот процесс и крутить его, то при перегрузке run нужно в теле метода тоже писать start()? Название: Re: QProcess и QThreads Отправлено: mutineer от Июнь 03, 2013, 14:33 Нет, в теле run() писать start() не надо, его надо вызывать как и раньше у объекта потока
Название: Re: QProcess и QThreads Отправлено: Disa от Июнь 04, 2013, 16:26 Да у меня руки не из того места. С потоками разобрался и где-то прочел, что start будет работать в том же потоке где и объявлялся указатель на qprocess. Меня больше смутило, что у меня start ничего не делал, потом выяснилось, что чисто для консольных утилит нужно либо ловить сигналы типа readyReadStandardOutput, либо же запускать через терминал / cmd. Я пока сделал второе, вроде работает. Костыль, конечно.
PS: Мб кто-нибудь кто-то знает, как запустить параллельно 2е и более консольные утилиты не вызывая терминала? |