Требования в разветвленных дочерних программах для связи по каналу с программой запуска

Допустим, у меня есть программа под названием «parent», которая использует fork () и execl () для запуска другой программы под названием «child», и я хочу сохранить связь между этими двумя программами. Похоже, что лучшим способом сохранить эту связь будет использование неназванных каналов. Легко найти документацию и примеры о требованиях на стороне «родителя», но я не нашел того же на стороне «потомка».

Например, я думаю, что это руководство хорошо, но я не показываю, что мне нужно делать в программе, запущенной exec для обеспечения связи между обеими программами, я должен использовать dup () в «parent», чтобы поделиться дескрипторами но кто я правильно обращаюсь к трубе на стороне ребенка, чтобы установить связь между обоими ?:
http://tldp.org/LDP/lpg/node11.html

0

Решение

В статье дочерний процесс использует dup а также dup2 (dup2 лучше) настроить один из файловых дескрипторов в качестве стандартного ввода.
Процесс похож на стандартный вывод (вам понадобится отдельный pipe и связанные файловые дескрипторы).

Затем родитель может общаться с stdio ребенка, читая и записывая его в конец канала (ов).

Когда ребенок execed, эти файловые дескрипторы наследуются, поэтому одни и те же конечные точки канала останутся стандартным вводом и выводом в дочернем процессе.

Другими словами, если вы настроили дескрипторы файлов с dup/dup2 как в статье, вам не нужно делать ничего особенного в execEd процесс, вы можете просто читать и писать на STDIO.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector