Re[2]: Работа с консоль-приложением из Windows оболочки
От: Alexche  
Дата: 24.09.01 04:36
Оценка:
Здравствуйте Roman_M, вы писали:

RM>Создается анонимный канал(pipe), затем инициализируется в STARTUPINFO hStdOutput хэндлом записи созданного канала и

RM>dwFlags |= STARTF_USESTDHANDLES, а затем делается CreateProcess c bInheritHandles=TRUE, ну и ReadFile из хэндла чтения канала.

Работает, но очень медленно: программа уже завершила работу, а выведенные сообщения еще долго читаются, а после того, как все прочитается программа зависает на ReadFile
(ни один MessageBox не срабатывает)
Что здесь неправильно?

do
{
fSuccess = ReadFile( hReadPipe, &bReadBuffer, 1, &cbReadBuffer, NULL);
if( !fSuccess )
if( GetLastError() == ERROR_BROKEN_PIPE )
{
MessageBox("Child has died");
break; // child has died
}
else MessageBox("Pipe error");

{
...
}
} while( fSuccess && cbReadBuffer );
Alexche
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.