Russian Qt Forum
Ноябрь 22, 2024, 23:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProcess проблема: запущено приложение или нет ? [РЕШЕНО]  (Прочитано 4222 раз)
Денис
Гость
« : Сентябрь 19, 2014, 18:50 »

Проблема в следующем, есть основная прога и дочерняя. Дочерняя может жить после прекращения основной, но при повторном запуске основная программа должна знать запущен ли процесс с таким именем или нет и иметь возможность его закрыть. Полазил по форуму но ничего не нашел, заранее извиняюсь если пложу клон-темы ...
Проверяю статус открыта программа или нет (в основной):
Код:
    Sprocess = new QProcess();
    Sprocess->setProgram("\Daemon");
    Sprocess->setArguments(QStringList() << QString::number(xmlConf.timer) << xmlConf.str << QString::number(xmlConf.port));
    if(Sprocess->isOpen() == true)
        ui->pushButton->setDisabled(true);
    else
        ui->pushButton_2->setDisabled(true);

Проблема в том что не работает данная конструкция, процесс в диспечере висит, но основная программа не видит что он запущен. Пробывал и через Sprocess->state() == QProcess::Running.
Вычитал где-то что можно сделать через SingleProject НепонимающийНепонимающий??
« Последнее редактирование: Сентябрь 20, 2014, 03:33 от Денис » Записан
Денис
Гость
« Ответ #1 : Сентябрь 19, 2014, 19:37 »

Что никто не знает как закрыть существующий поток ?
Записан
vitfil
Гость
« Ответ #2 : Сентябрь 19, 2014, 21:11 »

Посмотрите, как устроен singleton.
Записан
Денис
Гость
« Ответ #3 : Сентябрь 19, 2014, 21:23 »

Типа работать с тем приложением через сокет ?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Сентябрь 19, 2014, 21:30 »

QProcess знает только о запущенных им самим процессах. Общайся с дочерним процессом через сокет или любой другой механизм IPC.
Записан
Денис
Гость
« Ответ #5 : Сентябрь 19, 2014, 21:33 »

QProcess знает только о запущенных им самим процессах. Общайся с дочерним процессом через сокет или любой другой механизм IPC.

Можешь примерчик скинуть ... чтоб понятно было как это правильно сделать ?
А то я щас велосипед изобрету )
Записан
Денис
Гость
« Ответ #6 : Сентябрь 20, 2014, 03:32 »

Всем спасибо  Смеющийся, уже сделал через локальный сокет QLocalServer и QLocalSocket  Шокированный
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.