Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ QProcess из QThread

Автор: pwp2008 19.12.2014, 14:49

Подскажите, кто сталкивался.Вопрос про использование класса QProcess из
потока(QThread). Цель- нужно дождаться ответа от системной команды, но не
прерывать основной обработки и это не единожды, а периодически.
Компилируется все нормально, но на исполнении в конце концов вылетает
по Segmentation fault, чаще всего после QProcess::start();хотя иногда и в QThread падает по той же причине, но реже.Может сработать и 2 и 15 раз, но в конце концов загинается.
В процессе работы иногда выскакивало :
QSocketNotifier: Multiple socket notifiers for same socket 3640 and type Read.
Все это под МСВС с QT3.3. МСВС - это типа Linux...

Автор: wiz29 19.12.2014, 16:56

без кода сложно сказать в чем проблема, да и Qt 3 вроде уже вошел в историю.

Автор: lanz 19.12.2014, 20:53

Вот здесь пишут что так не стоит делать, симптомы те-же что и у вас:
http://www.qtcentre.org/threads/23552-Is-a-QProcess-thread-safe-in-Qt4

Тред вам и не нужен, подключитесь к сигналам процесса в основном потоке.

Автор: pwp2008 20.12.2014, 14:22

Цитата
wiz29 без кода сложно сказать в чем проблема, да и Qt 3 вроде уже вошел в историю.

насчет истории - это,к сожалению, у кого как...

Цитата
lanz Вот здесь пишут что так не стоит делать, симптомы те-же что и у вас:
http://www.qtcentre.org/threads/23552-Is-a...ead-safe-in-Qt4

Ок, спасибо, обязательно посмотрю,хотя, там похоже про QT4

Цитата
lanzТред вам и не нужен, подключитесь к сигналам процесса в основном потоке.

Ок,не помню сейчас, а проверить не на чем, но вроде QProcess в 3.3 сигналы и выдает,
а вот QThead - нет. Если сигнал об окончании у QProcess есть, то Вы, похоже, правы- Thread не нужен.Спасибо.


Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)