2016-02-29 3 views
1

Учитывая, что программа, обрабатывающая процессы, как я могу отправить сообщение с использованием именованного канала из процесса нижнего уровня (листа) в процесс верхнего уровня.C - Связь между процессами верхнего и нижнего уровня

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

ответ

0

Создайте пару труб в верхнем процессе и получите нижний процесс наследования (автоматический). Затем нижний процесс может записываться в конец записи, а верхний процесс может считываться с конца чтения.

Вы создаете пару труб с помощью системной шкалы pipe, зарегистрированной в http://linux.die.net/man/2/pipe. В документации приведен пример, когда ребенок читает и родитель записывает. В вашем случае вы переключите его.

Inherited fds засчитываются ссылки на vnode, поэтому вам нужно закрыть все концы записи во всех процессах, отличных от нижнего процесса, из которого вы хотите написать, так что возможное закрытие конца записи в процесс записи может генерировать в читателе конец файла.

Смежные вопросы