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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос о передаче-приеме сигналов из одной программы в другую  (Прочитано 7349 раз)
Foss
Гость
« : Декабрь 01, 2009, 17:50 »

Добрый вечер!
вот такая ситуация-если кто сталкивался плизик отпишите.

В программе запущена вторая программа c помощью QProcess. Можно ли передать в QProcess какой то сигнал(строку, цифру, просто сигнал) и самое главное поймать его во второй программе, чтобы можно было в ней выполнить по этому сигналу нужные мне действия.
Записан
BRE
Гость
« Ответ #1 : Декабрь 01, 2009, 17:55 »

Добрый вечер!
вот такая ситуация-если кто сталкивался плизик отпишите.

В программе запущена вторая программа c помощью QProcess. Можно ли передать в QProcess какой то сигнал(строку, цифру, просто сигнал) и самое главное поймать его во второй программе, чтобы можно было в ней выполнить по этому сигналу нужные мне действия.
Записать в stdin этому процессу нужное число/строку.
Записан
Foss
Гость
« Ответ #2 : Декабрь 01, 2009, 17:59 »

Записать в stdin этому процессу нужное число/строку.


угум...спс...а как считать в программе этот сигнал, в тот момент когда стдин  его посылает? создать что то или как? как "выципить" сигнал?)
Записан
BRE
Гость
« Ответ #3 : Декабрь 01, 2009, 18:02 »

угум...спс...а как считать в программе этот сигнал, в тот момент когда стдин  его посылает? создать что то или как? как "выципить" сигнал?)
А во втором процессе считать его из потока.
Почитай про stdin, stdout, stderr +
Detailed Description про QProcess.
Записан
Foss
Гость
« Ответ #4 : Декабрь 03, 2009, 14:16 »


А во втором процессе считать его из потока.
Почитай про stdin, stdout, stderr +
Detailed Description про QProcess.


в том то и проблема, что не пойму, как определить момент, когда stdin примет данные, т.е. в какой момент можно считать из него...
Записан
spectre71
Гость
« Ответ #5 : Декабрь 03, 2009, 14:47 »


А во втором процессе считать его из потока.
Почитай про stdin, stdout, stderr +
Detailed Description про QProcess.


в том то и проблема, что не пойму, как определить момент, когда stdin примет данные, т.е. в какой момент можно считать из него...

По таймеру пытаться читать из stdin
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Декабрь 03, 2009, 14:53 »

в том то и проблема, что не пойму, как определить момент, когда stdin примет данные, т.е. в какой момент можно считать из него...
Упрощенно/утрированно stdin - это клавиатура. Когда с нее можно принять данные? Ясно когда пользователь что-то введет. Значит надо или стоять ждать или проверять по таймеру.
Записан
Foss
Гость
« Ответ #7 : Декабрь 03, 2009, 15:14 »


т.е. сигнала нет... хотелось бы иметь что нить типа wroteToStdin(). Кстати, случайно нельзя в программе выцепить ее процесс (например, QProcess *proc = (QProcess*) qApp или еще какая нить бредятина типа этой;) а уже к полученному процессу прилепить сигнал...
Записан
BRE
Гость
« Ответ #8 : Декабрь 03, 2009, 16:37 »


т.е. сигнала нет... хотелось бы иметь что нить типа wroteToStdin(). Кстати, случайно нельзя в программе выцепить ее процесс (например, QProcess *proc = (QProcess*) qApp или еще какая нить бредятина типа этой;) а уже к полученному процессу прилепить сигнал...
А эти сигналы QProcess?
void readyReadStandardError ()
void readyReadStandardOutput ()
Записан
spectre71
Гость
« Ответ #9 : Декабрь 03, 2009, 16:49 »


т.е. сигнала нет... хотелось бы иметь что нить типа wroteToStdin(). Кстати, случайно нельзя в программе выцепить ее процесс (например, QProcess *proc = (QProcess*) qApp или еще какая нить бредятина типа этой;) а уже к полученному процессу прилепить сигнал...

Ответ - нет.
Записан
BRE
Гость
« Ответ #10 : Декабрь 03, 2009, 17:30 »

Ответ - нет.
Почему нет?

Цитировать
void QProcess::readyReadStandardError ()   [signal]

This signal is emitted when the process has made new data available through its standard error channel (stderr). It is emitted regardless of the current read channel.

See also readAllStandardError() and readChannel().

Цитировать
void QProcess::readyReadStandardOutput ()   [signal]

This signal is emitted when the process has made new data available through its standard output channel (stdout). It is emitted regardless of the current read channel.

See also readAllStandardOutput() and readChannel().
Записан
spectre71
Гость
« Ответ #11 : Декабрь 03, 2009, 18:41 »

Ответ - нет.
Почему нет?

Потому что он хотел от текущее приложение(QApplication) рассматривать как QProcess и пытаться как-то отлавливать stdin Смеющийся
Короче перечитай. Улыбающийся
Записан
west
Гость
« Ответ #12 : Декабрь 09, 2009, 09:51 »

Можно посадить оба процесса на локальный сокет (QLocalSocket) или канал (UNIX) и по нему обмениваться. Можно  через общую память, но тогда нужно делать ее опрос в таймере. Короче все, что по теме "межпроцессное взаимодействие".
« Последнее редактирование: Декабрь 14, 2009, 10:24 от west » Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #13 : Декабрь 09, 2009, 21:21 »

QDbus
Записан
niXman
Гость
« Ответ #14 : Декабрь 09, 2009, 21:25 »

в ассистанте сказанно:
Цитировать
The QtDBus module is a Unix-only library
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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