Russian Qt Forum

Qt => Общие вопросы => Тема начата: Ubuntu_linux от Июнь 02, 2013, 11:01



Название: Прочитать бинарный файл и записать в stdin процесса
Отправлено: Ubuntu_linux от Июнь 02, 2013, 11:01
Каким образом прочесть бинарный файл и записать результат в stdin запущенного процесса?


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: Bepec от Июнь 02, 2013, 11:17
QFile -> QByteArray -> stdin.


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: Ubuntu_linux от Июнь 02, 2013, 16:57
Оно то да, но с бинарным файлом что-то не коректно читает.
Есть еще один вопрос, есть файл который загружаеться с сети, как его прочесть до конца, если скорость загрузки маленькая?


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: thechicho от Июнь 02, 2013, 18:24
void QNetworkReply::finished () [signal]
не работает?


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: Ubuntu_linux от Июнь 02, 2013, 21:01
Нет, так как загрузка идет через тузлу wget.


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: thechicho от Июнь 02, 2013, 21:32
подождать пока загрузится, потом считать?)


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: Ubuntu_linux от Июнь 02, 2013, 22:32
Так нельзя, надо одновременно качать и читать файл. Как можно отловить изминения файла?


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: kambala от Июнь 02, 2013, 22:56
можно по таймеру считывать размер файла. также можно попробовать через QFileSystemWatcher.


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: Ubuntu_linux от Июнь 03, 2013, 02:39
В принципе я знаю размер файла, который должен бить!
На винде у меня систем вочер не реагирует на изменения размера файла...


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: Bepec от Июнь 03, 2013, 06:52
Систем ватчер реагирует на создание/удаление. Причем я тоже удивлён таким его поведением был когда-то.

Вам подойдёт решение на таймере. У меня подобным образом была сделана грабилка видео с сайтов :D


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: kambala от Июнь 03, 2013, 11:15
В принципе я знаю размер файла, который должен бить!
хорошо, что ты знаешь. но если размер файла изменился, значит появились новые данные.
На винде у меня систем вочер не реагирует на изменения размера файла...
Систем ватчер реагирует на создание/удаление. Причем я тоже удивлён таким его поведением был когда-то.
в 4.8.4 у меня изменения файлов отслеживаются


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: Ubuntu_linux от Июнь 03, 2013, 15:07
Даже если wget''от заливать?


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: Bepec от Июнь 03, 2013, 15:32
Kambala это бага 4.7.* :)


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: kambala от Июнь 03, 2013, 18:16
Даже если wget''от заливать?
не пробовал
Kambala это бага 4.7.* :)
если у ТСа некоммерческая версия библиотеки, то думаю перейти на 4.8.х не составит особого труда


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: Ubuntu_linux от Июнь 03, 2013, 18:16
Вот решил делать следующим образом, через QProcess  запускаю нужную мне утилиту, а файл читаю  main.cpp и пишу в процесс write(char* data).  Но почему то даные к процесу не доходять, что за эрунда можеть бить?


Название: Re: Прочитать бинарный файл и записать в stdin процесса
Отправлено: Ubuntu_linux от Июнь 03, 2013, 18:21
Я сейчас на Qt5 под визул студио...