execl pipe без дупликации

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

Программа «А» (родительская) создает вилки каналов и выполняется в «В» (дочернюю). В функции main() программы B мне нужно иметь возможность читать и писать в канал.

Есть ли способ получить доступ к моим файловым дескрипторам канала в дочернем процессе после того, как excel вступит во владение и выполнит мой дочерний процесс?

Спасибо, ~ Эрик


person EToreo    schedule 11.09.2009    source источник


Ответы (2)


execl(3) не влияет на файловые дескрипторы, за одним исключением

Можно пометить файловый дескриптор как close-on-exec с помощью fcntl(2), но обычно различные разновидности execve(2) не влияют на открытые файловые дескрипторы, и они остаются открытыми в дочерних элементах.

person DigitalRoss    schedule 11.09.2009
comment
Спасибо. Я обнаружил, что передача входных и выходных файловых дескрипторов канала в качестве аргументов программе B делает свое дело. - person EToreo; 12.09.2009

Прочтите Руководство Beej по межпроцессному взаимодействию в Unix (его можно найти по адресу http://beej.us/guide/ ), особенно раздел 4.

person pmg    schedule 11.09.2009