Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.16;
Скачать: CL | DM;

Вниз

stdout 128 bytes   Найти похожие ветки 

 
Alexcool   (2002-07-24 17:21) [0]

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


 
DiamondShark ©   (2002-07-24 17:34) [1]

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


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

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


 
DiamondShark ©   (2002-07-24 17:55) [3]

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


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

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


 
DiamondShark ©   (2002-07-25 17:59) [5]

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

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

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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2002.09.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
8-50868
Suroga
2002-01-17 20:09
2002.09.16
Озвучивание времени


3-50660
mas_alexey
2002-08-22 18:56
2002.09.16
BDE


6-50883
Хусга
2002-07-02 21:41
2002.09.16
Как принять сообщение посланое Winpopup`ом или net send`ом ?


1-50701
BDRON
2002-09-05 08:03
2002.09.16
Сохранить большой объем текстовых данных в файл


8-50867
fore_3
2002-04-25 13:34
2002.09.16
Как сделать аквалайзер