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

Вниз

Возвращаясь к неименованным пайпам   Найти похожие ветки 

 
Поросенок Винни-Пух ©   (2008-06-09 02:42) [0]

В PlatformSdk приведен простой пример обмена данными между двумя процессами через неименованные каналы.
Схема такая: делаются два вызова CreatePipe (для StdIn и StdOut дочернего процесса)
Потом два DuplicateHandle и createprocess c передачей в стартапинфо двух хендлов.
Далее родительский процесс делает writefile в stdin дочернего и закрывает этот хендл чтобы там завершился readfile.
После этого идет чтение из stdout дочернего процесса, с предвариельным закрыванием его stdout.

Пример работает замечательно, но есть вопрос:
Как сделать так, чтобы рид и райт в дочернем мог завершаться без закрытия хендлов?
Мне требуется передать из дочернего две порции информации.
Схематично это выглядит так

Главный пишет блок информации дочернему.
Дочерний обрабатывает инфу и отвечает блоком № 1
Главный читает ответный блок №1
Дочерний посылает блок №2
Главный читает блок №2

Первое что приходит в голову - предварить оба блока заголовком, в котором указать длины/смещение и делать все за один цикл обмена.


 
Slym ©   (2008-06-09 07:58) [1]

передай CTRL+Z (непомню код... вроде #26)


 
Evgeny V ©   (2008-06-09 09:55) [2]


> Возвращаясь к неименованным пайпам


> как сделать так, чтобы рид и райт в дочернем мог завершаться
> без закрытия хендлов?

Их и не надо закрывать, если они тебе нужны.
Делай два пайпа - один чтобы передавать данные из главного потока в дочерний, другой что бы передавать данные из дочернего потока в главный. Когда необходимость в пайпах отпадет - закроешь хэндлы.


 
Mystic ©   (2008-06-09 10:31) [3]

Вот когда-то писал что-то подобное... Может поможет?
http://mu.webest.net/prog/mu-console.1.00a.zip


 
Поросенок Винни-Пух ©   (2008-06-09 12:09) [4]

ага. сенкс.



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

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

Наверх




Память: 0.47 MB
Время: 0.017 c
2-1214419508
Igor23
2008-06-25 22:45
2008.07.27
CMD+ShellExecute


6-1190719291
mefodiy
2007-09-25 15:21
2008.07.27
Скачивание информации о курсах валют


2-1214461822
девушка
2008-06-26 10:30
2008.07.27
Аутентификация в MS SQL через ADO


15-1213276839
Игорь М.
2008-06-12 17:20
2008.07.27
видеоролик


2-1214314234
evgenij
2008-06-24 17:30
2008.07.27
MouseMove