С++
< Programming
< vdmkrchkn
Get flash to fully experience Pearltrees
Программирование для Windows NT В среде операционной системы Microsoft Windows NT вам доступно такое удобное средство передачи данных между параллельно работающими процессами, как каналы типа Pipe. Это средство позволяет организовать передачу данных между локальными процессами, а также между процессами, запущенными на различных рабочих станциях в сети.
Здравствуйте, IgorKr, Вы писали: IK>Процесс-клиент генерирует числа и отправляет в канал. IK>Код: Консольный ввод-вывод в программе, запускаемой с перенаправлением в трубу — строго исключить. Кто будет проверять, что количество аргументов не меньше ожидаемого? Каст из указателя на строку символов в целое число даёт совсем не тот результат, которого вы ожидаете. Вот на этом _getch он и висит. Как я уже говорил — консольный ввод-вывод исключить.
Канал - однонаправленное средство взаимодействия. Данные, записанные в канал со "стороны записи" читаются со "стороны чтения." Каналы - последовательные устройства; данные всегда читаются в том же порядке, в котором были записаны.
Использование anonymous pipes для перехвата StdIn/StdOut дочернего процесса. Автор: Borland Developer Support Staff Перевод: Валерий Вотинцев Тема: О том, как создать дочерний процесс и передать управление его потоком ввода-вывода родительскому процессу за счет переадресации StdIn/StdOut. Введение: В настоящей статье объясняется, как запустить дочернее консольное приложение и переадресовать его стандартный ввод/вывод с использованием неименованных пайпов.
Следующий логический шаг в нашем изучении вызова pipe — разрешить дочернему процессу быть другой программой, отличной от своего родителя, а не просто другим процессом, выполняющим ту же самую программу. Сделать это можно с помощью вызова exec. Единственная сложность заключается в том, что новому процессу, созданному exec, нужно знать, какой файловый дескриптор применять для доступа. В предыдущем примере этой проблемы не возникло, потому что дочерний процесс обращался к своей копии данных file_pipes. После вызова exec возникает другая ситуация, поскольку старый процесс заменен новым дочерним процессом. Эту проблему можно обойти, если передать файловый дескриптор (который, в конце концов, просто число) как параметр программе, вновь созданной с помощью вызова exec.