Russian Qt Forum

Qt => Общие вопросы => Тема начата: Foss от Декабрь 01, 2009, 17:50



Название: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: Foss от Декабрь 01, 2009, 17:50
Добрый вечер!
вот такая ситуация-если кто сталкивался плизик отпишите.

В программе запущена вторая программа c помощью QProcess. Можно ли передать в QProcess какой то сигнал(строку, цифру, просто сигнал) и самое главное поймать его во второй программе, чтобы можно было в ней выполнить по этому сигналу нужные мне действия.


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: BRE от Декабрь 01, 2009, 17:55
Добрый вечер!
вот такая ситуация-если кто сталкивался плизик отпишите.

В программе запущена вторая программа c помощью QProcess. Можно ли передать в QProcess какой то сигнал(строку, цифру, просто сигнал) и самое главное поймать его во второй программе, чтобы можно было в ней выполнить по этому сигналу нужные мне действия.
Записать в stdin этому процессу нужное число/строку.


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: Foss от Декабрь 01, 2009, 17:59
Записать в stdin этому процессу нужное число/строку.


угум...спс...а как считать в программе этот сигнал, в тот момент когда стдин  его посылает? создать что то или как? как "выципить" сигнал?)


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: BRE от Декабрь 01, 2009, 18:02
угум...спс...а как считать в программе этот сигнал, в тот момент когда стдин  его посылает? создать что то или как? как "выципить" сигнал?)
А во втором процессе считать его из потока.
Почитай про stdin, stdout, stderr +
Detailed Description про QProcess.


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: Foss от Декабрь 03, 2009, 14:16

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


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


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: spectre71 от Декабрь 03, 2009, 14:47

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


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

По таймеру пытаться читать из stdin


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: Igors от Декабрь 03, 2009, 14:53
в том то и проблема, что не пойму, как определить момент, когда stdin примет данные, т.е. в какой момент можно считать из него...
Упрощенно/утрированно stdin - это клавиатура. Когда с нее можно принять данные? Ясно когда пользователь что-то введет. Значит надо или стоять ждать или проверять по таймеру.


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: Foss от Декабрь 03, 2009, 15:14

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


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: BRE от Декабрь 03, 2009, 16:37

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


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: spectre71 от Декабрь 03, 2009, 16:49

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

Ответ - нет.


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: BRE от Декабрь 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().


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: spectre71 от Декабрь 03, 2009, 18:41
Ответ - нет.
Почему нет?

Потому что он хотел от текущее приложение(QApplication) рассматривать как QProcess и пытаться как-то отлавливать stdin ;D
Короче перечитай. :)


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: west от Декабрь 09, 2009, 09:51
Можно посадить оба процесса на локальный сокет (QLocalSocket) или канал (UNIX) и по нему обмениваться. Можно  через общую память, но тогда нужно делать ее опрос в таймере. Короче все, что по теме "межпроцессное взаимодействие".


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: xokc от Декабрь 09, 2009, 21:21
QDbus


Название: Re: Вопрос о передаче-приеме сигналов из одной программы в другую
Отправлено: niXman от Декабрь 09, 2009, 21:25
в ассистанте сказанно:
Цитировать
The QtDBus module is a Unix-only library