Название: Перезапуск приложения Отправлено: Godfather от Июнь 02, 2008, 20:01 Такой вопрос - как из под приложения перезапустить самого себя?
Пробовал QProcess::start() но я так понял что это запуск дочернего процеса, и если основной убить, умирает и этот Ситуация следующая: Код: QMessageBox::StandardButton ret = QMessageBox::question(this, strMsgTitle, QString::fromLocal8Bit("Что бы изменения вступили в силу, необходимо перезапустить приложение. Сделать это сейчас?"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel); Название: Re: Перезапуск приложения Отправлено: Sergeich от Июнь 02, 2008, 21:41 Код: if ( QProcess::startDetached(QString("\"") + QApplication::applicationFilePath() + "\"") ) Название: Re: Перезапуск приложения Отправлено: Alex03 от Июнь 03, 2008, 06:21 У меня прога пользовала некоторые общие ресурсы в монопольном режиме (да ещё была проверка на запуск второго экземпляра), поэтому делал таким кривоватым способом:
1. Выделил код возврата из приложения для перезапуска 2. запускал прогу из скрипта (bash / cmd-в винде) в котором в цикле запускал прогу пока код возврата - ПЕРЕЗАПУСК. Правда в цикле скрипта у меня ещё кое что было, что ещё более оправдывало такой подход.... :) Название: Re: Перезапуск приложения Отправлено: Godfather от Июнь 03, 2008, 12:37 спасибо большое! то что надо!
Код: QProcess::startDetached(QApplication::applicationFilePath(), QStringList(), QApplication::applicationDirPath()); Название: Re: Перезапуск приложения Отправлено: Sergeich от Июнь 03, 2008, 16:53 Код: QProcess::startDetached(QApplication::applicationFilePath(), QStringList(), QApplication::applicationDirPath()); Цитировать On Windows, arguments that contain spaces are wrapped in quotes. Название: Re: Перезапуск приложения Отправлено: Godfather от Июнь 03, 2008, 19:51 точняк, забыл совсем
Название: Re: Перезапуск приложения Отправлено: Alex03 от Июнь 04, 2008, 06:25 А я в X11 во времена 3-ей Qt наступал на грабли с QApplication::applicationFilePath()/QApplication::applicationDirPath().
Там прямо у ОС узнать нельзя, поэтому Qt действовала несколько эвристически, на основе arg[0], переменной окружения PATH и текущего пути. Так вот грабли заключались в том что bash (и видимо другие шеллы) по разному относительно qt воспринимали "пустой путь" в PATH. Т.е. когда PATH=:dir1:dir2 PATH=dir1::dir2 PATH=dir1:dir2: Постил об этом тролям но чтото тогда ответа не было.... 4-5лет назад дело было... Сейчас не знаю как обстоит дело... :) |