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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qprocess+bash скрипт  (Прочитано 6199 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« : Май 12, 2017, 06:06 »

Здравствуйте вопрос.
Имею графическое приложение qt и запускаю посредством qprocess->execute(script.sh)   bash скрипт
который выполняет запись на диск с помощью wodim и genisoimage
но во время того как выполняется данный скрипт виснет окно графической программы(
сигналы readyread не приходят.Как можно сделать чтобы выполнялся скрипт , при этом он запускался в синхронном режиме чтобы отлавливались события в этом скрипте и испускались сигналы?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Май 12, 2017, 07:10 »

Здравствуйте вопрос.
Имею графическое приложение qt и запускаю посредством qprocess->execute(script.sh)   bash скрипт
который выполняет запись на диск с помощью wodim и genisoimage
но во время того как выполняется данный скрипт виснет окно графической программы(
сигналы readyread не приходят.Как можно сделать чтобы выполнялся скрипт , при этом он запускался в синхронном режиме чтобы отлавливались события в этом скрипте и испускались сигналы?
execute не блокирует запускающее приложение. Что там у вас после него выполняется? waitForFinished?
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #2 : Май 12, 2017, 08:06 »

Ну после выполнения скрипта открывается окно
Qwidget show, выполняется delete экземпляра qprocess...

Суть в том что я немогу отловить сигналы qprocess
Мне нужно чтобы при работе скрипта главное окно не висело. Но при этом мне не нужен асинхронный процесс . Так как мне нужно обязательно дождаться окончания записи на диск. Чтоб потом считать номер и сделать запись в бд.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Май 12, 2017, 09:04 »

Покажите, что вы вызываете после выполнения execute.
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #4 : Май 12, 2017, 09:13 »

Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Май 12, 2017, 10:33 »

1. Не надо код в картинках присылать.
2. Что за system? Что за sleep?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #6 : Май 12, 2017, 10:39 »

sleep это задержка перед началом программы
В system запускается программа которая читает номер тома диска
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Май 12, 2017, 10:45 »

Из-за sleep гуй зафризится. Зачем он вообще?
Зачем system, если есть QProcess? Не надо мешать вкучу разные подходы.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #8 : Май 12, 2017, 11:24 »

sleep я уже убрал
А по поводу system он тут не причем...
Это как бы отрабатывает другая программа
Мне просто нужно чтобы когда я запустил скрипт записи у меня не подвисали бы гуевые окна в процессе записи...
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #9 : Май 12, 2017, 12:05 »

Вообщем протестировал с qprocess start и waitforfinished в итоге заметил что когда в скрипте выполняется cdrecord то тогда события не поступают
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #10 : Май 12, 2017, 19:23 »



это просто пиздец
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #11 : Май 12, 2017, 19:39 »

это просто пиздец
Ну не копипастить-же в самом деле. Улыбающийся
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #12 : Май 13, 2017, 11:05 »

смысл в том что я уже убрал sleep...
моя прога работает на 2 система на мсвс 5.7 основанной на редхате и астра линукс основанной на дебиане
Так вот почему то когда на астре работает программа то gui не подвисает при вызове скрипта записи с использование метода qprocess::execute
а вот в мсвс подвисание происходит во время работы скрипта записи
правда в астре диски пишу genisoimage+wodim
а в мсвс mkisofs+cdrecord
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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