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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как проверить стандартный ввод  (Прочитано 3504 раз)
rizzoli
Гость
« : Июль 18, 2014, 08:06 »

Есть два процесса: один запускает другой и периодически посылает туда команды.
Как проверить из второго процесса, что стандартный ввод пуст?
Записан
OKTA
Гость
« Ответ #1 : Июль 18, 2014, 09:41 »

bool QIODevice::atEnd () const [virtual] не помогает?
Записан
rizzoli
Гость
« Ответ #2 : Июль 21, 2014, 11:14 »

Я хотел что-то типа такого, но не работает - atEnd() всегда возвращает false:
Код:
#include <QTextStream>

int main(int, char **)
{
    QTextStream qstdin(stdin, QIODevice::ReadOnly);
    QTextStream qstdout(stdout, QIODevice::WriteOnly);

    for(quint32 i = 0; i < 999999999; ++i)
    {
        qstdout << i;

        if(!qstdin.atEnd())
        {
            if(qstdin.readLine() == "Stop\n")
            {
                qstdout << "Stopped";
                break;
            }
        }
    }

    return 0;
}
Записан
Fat-Zer
Гость
« Ответ #3 : Июль 21, 2014, 12:39 »

rizzoli, «по-простому» сделать не возможно... так или иначе придётся вешаться на сигнал QIODevice::readyRead().
Записан
rizzoli
Гость
« Ответ #4 : Июль 22, 2014, 07:25 »

Вот нашел ссылку: http://stackoverflow.com/questions/7457990/child-process-stdin-doesnt-get-data-sent-by-parent-process.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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