Russian Qt Forum

Qt => Общие вопросы => Тема начата: maks от Сентябрь 23, 2008, 18:07



Название: Qprocess и kill
Отправлено: maks от Сентябрь 23, 2008, 18:07
Добрый день.
Qprocess  у меня запускает firefox.
в определенный момент я у Qprocess вызываваю  метод kill но firefox щстается запущен.
Как же все таки пристрелить firefox.

Код:
QProcess qpr=new QProcess;
qpr->start("firefox",NULL);

qpr->kill()// ноль эмоций.


Название: Re: Qprocess и kill
Отправлено: chipset от Сентябрь 24, 2008, 06:12
terminate() ?


Название: Re: Qprocess и kill
Отправлено: Alex03 от Сентябрь 24, 2008, 07:39
попробуй другой процесс запустить.
некоторые проги при запуске порождают новый, отвязанный процесс и завершаются. Так может например саморазархивирующиеся проги делать и т.д. Случайно finished() не приходит почти сразу после старта?


Название: Re: Qprocess и kill
Отправлено: maks от Сентябрь 24, 2008, 13:18
Да finish в самом деле выполняется сразу после запуска.


Название: Re: Qprocess и kill
Отправлено: Racheengel от Апрель 08, 2010, 17:45
хм, тема старая, но похоже, еще актуальна :)
в самом деле, а есть ли возможность через QProcess прибить процессы, запущенные процессом, запущенным QProcess ? :)
например через QProcess пускается батник, который в свою очередь пускает прогу. QProcess::kill() прибьет только процесс батника, но не запущенной проги. Я понимаю, что можно это через системные функции сделать, но интересно, как кути с этим справляется.


Название: Re: Qprocess и kill
Отправлено: Гурман от Апрель 09, 2010, 07:04
вообще-то есть в POSIX...

Код:
#include <sys/types.h>

#include <signal.h>

int kill(pid_t pid, int signalnumber);

и Qt наверняка через это и работает, только разбирается самостоятельно с правами


Название: Re: Qprocess и kill
Отправлено: break от Ноябрь 30, 2010, 14:45
Вдруг кому поможет - использовал вот такой ХАК для переоткрытия окна FireFox который выводит видеонаблюдение

Код:
	QProcess process;
process.start( "killall firefox-bin" );
process.waitForFinished();

QStringList arguments;
arguments.append( QString("http://%1:8081/").arg(m_sIPAddress) );

m_FirefoxVideo.terminate();
m_FirefoxVideo.kill();
m_FirefoxVideo.waitForFinished();
m_FirefoxVideo.start( "firefox", arguments );