Главная страница
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.016 c
13-1120618997
Skyle
2005-07-06 07:03
2008.07.27
Web Service, DCOM сервер и многия клиенты


6-1190980794
HaJik
2007-09-28 15:59
2008.07.27
IndyTCPClien Заменить сообщение об ошибке.


2-1214609393
DJ_UZer
2008-06-28 03:29
2008.07.27
Добавление текста в мемо


2-1214289700
petvv
2008-06-24 10:41
2008.07.27
После переброски Упаковка = #Z SZ#S = ??? (XP, D2007)


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