Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Как правильно остановить QProcess?


Автор: Mechatronic 26.11.2014, 13:27
Здравствуйте.
Написал для остановки процессов такую функцию:
Код

void stopProcess(QProcess &process, QString processName)
{
    if(process.state() != QProcess::NotRuinning)
    {
            process.kill();
            process.waitForFinished();
            if(!finished)
                qDebug() <<  "fail"
            else
                qDebug() << "ok";
    }else
            qDebug() << "already stopped";
}

Использую ее перед удалением объекта QProcess. Объект удаляется без претензий со стороны кьюта,
 но после этого я вижу свой процесс в выводе "ps -axjf" как потомка init (у меня Линукс).
Подскажите, что я делаю не так? 
Спасибо.

Автор: Mechatronic 26.11.2014, 13:46
Похоже, что такое происходит только если запускать команду от "sudo"

Автор: kapbepucm 5.1.2015, 16:59
Цитата

void QProcess::kill () const [slot]

Terminates the process. This is not a safe way to end a process since the process will not be able to do any cleanup.


а как поведёт себя в вашем случае process.terminate() ?

Автор: Avazart 7.2.2015, 15:00
process.terminate() кажется посылает окнам программы сообщение "закрыть".
kill же грубо убивает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)