koldun90
|
|
« : Май 12, 2017, 06:06 » |
|
Здравствуйте вопрос. Имею графическое приложение qt и запускаю посредством qprocess->execute(script.sh) bash скрипт который выполняет запись на диск с помощью wodim и genisoimage но во время того как выполняется данный скрипт виснет окно графической программы( сигналы readyread не приходят.Как можно сделать чтобы выполнялся скрипт , при этом он запускался в синхронном режиме чтобы отлавливались события в этом скрипте и испускались сигналы?
|
|
|
Записан
|
|
|
|
Old
|
|
« Ответ #1 : Май 12, 2017, 07:10 » |
|
Здравствуйте вопрос. Имею графическое приложение qt и запускаю посредством qprocess->execute(script.sh) bash скрипт который выполняет запись на диск с помощью wodim и genisoimage но во время того как выполняется данный скрипт виснет окно графической программы( сигналы readyread не приходят.Как можно сделать чтобы выполнялся скрипт , при этом он запускался в синхронном режиме чтобы отлавливались события в этом скрипте и испускались сигналы?
execute не блокирует запускающее приложение. Что там у вас после него выполняется? waitForFinished?
|
|
|
Записан
|
|
|
|
koldun90
|
|
« Ответ #2 : Май 12, 2017, 08:06 » |
|
Ну после выполнения скрипта открывается окно Qwidget show, выполняется delete экземпляра qprocess...
Суть в том что я немогу отловить сигналы qprocess Мне нужно чтобы при работе скрипта главное окно не висело. Но при этом мне не нужен асинхронный процесс . Так как мне нужно обязательно дождаться окончания записи на диск. Чтоб потом считать номер и сделать запись в бд.
|
|
|
Записан
|
|
|
|
Old
|
|
« Ответ #3 : Май 12, 2017, 09:04 » |
|
Покажите, что вы вызываете после выполнения execute.
|
|
|
Записан
|
|
|
|
koldun90
|
|
« Ответ #4 : Май 12, 2017, 09:13 » |
|
|
|
|
Записан
|
|
|
|
Пантер
|
|
« Ответ #5 : Май 12, 2017, 10:33 » |
|
1. Не надо код в картинках присылать. 2. Что за system? Что за sleep?
|
|
|
Записан
|
1. Qt - Qt Development Frameworks; QT - QuickTime 2. Не используйте в исходниках символы кириллицы!!! 3. Пользуйтесь тегом code при оформлении сообщений.
|
|
|
koldun90
|
|
« Ответ #6 : Май 12, 2017, 10:39 » |
|
sleep это задержка перед началом программы В system запускается программа которая читает номер тома диска
|
|
|
Записан
|
|
|
|
Пантер
|
|
« Ответ #7 : Май 12, 2017, 10:45 » |
|
Из-за sleep гуй зафризится. Зачем он вообще? Зачем system, если есть QProcess? Не надо мешать вкучу разные подходы.
|
|
|
Записан
|
1. Qt - Qt Development Frameworks; QT - QuickTime 2. Не используйте в исходниках символы кириллицы!!! 3. Пользуйтесь тегом code при оформлении сообщений.
|
|
|
koldun90
|
|
« Ответ #8 : Май 12, 2017, 11:24 » |
|
sleep я уже убрал А по поводу system он тут не причем... Это как бы отрабатывает другая программа Мне просто нужно чтобы когда я запустил скрипт записи у меня не подвисали бы гуевые окна в процессе записи...
|
|
|
Записан
|
|
|
|
koldun90
|
|
« Ответ #9 : Май 12, 2017, 12:05 » |
|
Вообщем протестировал с qprocess start и waitforfinished в итоге заметил что когда в скрипте выполняется cdrecord то тогда события не поступают
|
|
|
Записан
|
|
|
|
qate
|
|
« Ответ #10 : Май 12, 2017, 19:23 » |
|
|
|
|
Записан
|
|
|
|
Old
|
|
« Ответ #11 : Май 12, 2017, 19:39 » |
|
это просто пиздец
Ну не копипастить-же в самом деле.
|
|
|
Записан
|
|
|
|
koldun90
|
|
« Ответ #12 : Май 13, 2017, 11:05 » |
|
смысл в том что я уже убрал sleep... моя прога работает на 2 система на мсвс 5.7 основанной на редхате и астра линукс основанной на дебиане Так вот почему то когда на астре работает программа то gui не подвисает при вызове скрипта записи с использование метода qprocess::execute а вот в мсвс подвисание происходит во время работы скрипта записи правда в астре диски пишу genisoimage+wodim а в мсвс mkisofs+cdrecord
|
|
|
Записан
|
|
|
|
|