Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

stdout 128 bytes [D6, Win2k]


Alexcool ©   (2002-07-24 17:21:00) 

Вот такой вопрос - создал Pipe (CreatePipe), переназначил stdout внешного приложкния в hWritePipe, запустил внешнее приложение с помощью CreateProcess, которое пишет в stdout что-то, и из своего приложения читаю с помощью ReadFile(hReadPipe...), функция ждет до тех пор, пока не внешнее приложение не запишет в Pipe 128 байт, почему? Как с этим бороться? Ответте кто знает...


SVM   (2002-07-26 12:35:00) [1]

Если не сделаешь Flush...


DiamondShark   (2002-07-25 17:59:00) [2]

Ух ты! Такого мне не встречалось.

Кстати, есть одно соображение. Именно на тему 128 байт.

Вторая программа (та что внешняя) случайно не на Дельфи писана?

Потому как стандартные write/writeln (точнее стандартный файловый тип Text) устроены так, что буферизируют данные, а буфер по умолчанию 128 байт. Т.е. до заполнения этого буфера в файл ВООБЩЕ НИЧЕГО НЕ ПИШЕТСЯ.


Alexcool   (2002-07-24 18:00:00) [3]

пробовал, получается, как только внешняя программа запишет в stdout 128 байт, ReadFile тут же вернется и быстро вызовится еще 127 раз, а потом снова зависнет, ожидая порции в 128 байт:)))


DiamondShark   (2002-07-24 17:55:00) [4]

Не заметил ваш пост в другом топике.
Попробуйте читать по 1 байту


Alexcool   (2002-07-24 17:51:00) [5]

Ан нет, указываю 1024, например. Причем же здесь 128?


DiamondShark   (2002-07-24 17:34:00) [6]

Такой уж вы указываете размер в вызове ReadFile.


Наверх

Титульная страница Поиск, карта сайта Написать письмо