Russian Qt Forum

Qt => Вопросы новичков => Тема начата: koldun90 от Май 12, 2017, 06:06



Название: Qprocess+bash скрипт
Отправлено: koldun90 от Май 12, 2017, 06:06
Здравствуйте вопрос.
Имею графическое приложение qt и запускаю посредством qprocess->execute(script.sh)   bash скрипт
который выполняет запись на диск с помощью wodim и genisoimage
но во время того как выполняется данный скрипт виснет окно графической программы(
сигналы readyread не приходят.Как можно сделать чтобы выполнялся скрипт , при этом он запускался в синхронном режиме чтобы отлавливались события в этом скрипте и испускались сигналы?


Название: Re: Qprocess+bash скрипт
Отправлено: Old от Май 12, 2017, 07:10
Здравствуйте вопрос.
Имею графическое приложение qt и запускаю посредством qprocess->execute(script.sh)   bash скрипт
который выполняет запись на диск с помощью wodim и genisoimage
но во время того как выполняется данный скрипт виснет окно графической программы(
сигналы readyread не приходят.Как можно сделать чтобы выполнялся скрипт , при этом он запускался в синхронном режиме чтобы отлавливались события в этом скрипте и испускались сигналы?
execute не блокирует запускающее приложение. Что там у вас после него выполняется? waitForFinished?


Название: Re: Qprocess+bash скрипт
Отправлено: koldun90 от Май 12, 2017, 08:06
Ну после выполнения скрипта открывается окно
Qwidget show, выполняется delete экземпляра qprocess...

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


Название: Re: Qprocess+bash скрипт
Отправлено: Old от Май 12, 2017, 09:04
Покажите, что вы вызываете после выполнения execute.


Название: Re: Qprocess+bash скрипт
Отправлено: koldun90 от Май 12, 2017, 09:13
(http://www.picshare.ru/uploads/170512/M0Tl3EukHR_thumb.jpg) (http://www.picshare.ru/view/8083709/)


Название: Re: Qprocess+bash скрипт
Отправлено: Пантер от Май 12, 2017, 10:33
1. Не надо код в картинках присылать.
2. Что за system? Что за sleep?


Название: Re: Qprocess+bash скрипт
Отправлено: koldun90 от Май 12, 2017, 10:39
sleep это задержка перед началом программы
В system запускается программа которая читает номер тома диска


Название: Re: Qprocess+bash скрипт
Отправлено: Пантер от Май 12, 2017, 10:45
Из-за sleep гуй зафризится. Зачем он вообще?
Зачем system, если есть QProcess? Не надо мешать вкучу разные подходы.


Название: Re: Qprocess+bash скрипт
Отправлено: koldun90 от Май 12, 2017, 11:24
sleep я уже убрал
А по поводу system он тут не причем...
Это как бы отрабатывает другая программа
Мне просто нужно чтобы когда я запустил скрипт записи у меня не подвисали бы гуевые окна в процессе записи...


Название: Re: Qprocess+bash скрипт
Отправлено: koldun90 от Май 12, 2017, 12:05
Вообщем протестировал с qprocess start и waitforfinished в итоге заметил что когда в скрипте выполняется cdrecord то тогда события не поступают


Название: Re: Qprocess+bash скрипт
Отправлено: qate от Май 12, 2017, 19:23
(http://www.picshare.ru/uploads/170512/M0Tl3EukHR_thumb.jpg) (http://www.picshare.ru/view/8083709/)

это просто пиздец


Название: Re: Qprocess+bash скрипт
Отправлено: Old от Май 12, 2017, 19:39
это просто пиздец
Ну не копипастить-же в самом деле. :)


Название: Re: Qprocess+bash скрипт
Отправлено: koldun90 от Май 13, 2017, 11:05
смысл в том что я уже убрал sleep...
моя прога работает на 2 система на мсвс 5.7 основанной на редхате и астра линукс основанной на дебиане
Так вот почему то когда на астре работает программа то gui не подвисает при вызове скрипта записи с использование метода qprocess::execute
а вот в мсвс подвисание происходит во время работы скрипта записи
правда в астре диски пишу genisoimage+wodim
а в мсвс mkisofs+cdrecord