Как обычно осуществляется «рукопожатие» в отношении именованных каналов - PullRequest
0 голосов
/ 03 августа 2009

Мне нужно реализовать протокол типа рукопожатия в небольшой программе Linux, которая использует именованные каналы для связи с другими процессами. Я искал общий шаблон реализации протокола типа рукопожатия при использовании именованных каналов, но я не смог ничего включить ...

Я просто не могу поверить, что для этого нет шаблонов. Может кто-нибудь указать мне на возможный ресурс?

В полном раскрытии это касается домашней работы, но реализация этого шаблона не домашняя работа. Нам нужно решить проблему в коде домашнего задания, и я считаю, что это возможное решение. Домашнее задание реализовано на C ++, но языки для меня не важны. Я просто не хочу изобретать велосипед ....

Обновление : У меня такое чувство, что это может быть реализовано с помощью сигналов .

Что я имею в виду под рукопожатием , так это то, что дочерний процесс сообщает своему родительскому процессу, что он готов к работе , но не продолжает (даже если что-то есть в канале) пока родитель не подаст сигнал В моей рабочей теории у меня будет много дочерних процессов, которые должны сообщать ready и wait для сигнала go от родителя.

1 Ответ

2 голосов
/ 03 августа 2009

При типичном использовании процессы зависят от блокировки до рукопожатия. Процесс записи открывает канал для записи, процесс чтения открывает канал для чтения, и в зависимости от того, что произойдет, сначала блокируются, пока другой процесс не откроет свою сторону. Это можно расширить для использования неблокирующего ввода-вывода на стороне считывателя.

Именованные каналы наиболее полезны для индивидуального IPC. В ситуации «один ко многим» вы, вероятно, должны использовать вместо этого сокет домена UNIX.

...