Мне было интересно, возможно ли порождать цепочку процессов (P0-вилки P1, P1-вилки P2, P2-вилки P3 и т. Д.), Где у каждого (большого) дочернего процесса есть свой отдельный, безымянный канал, соединяющий его к началу цепочки, а именно P0?
Предположим, что P0 действует как своего рода «менеджер» и отправляет инструкции этим процессам. Один может быть добавлен в конце цепочки или конкретный процесс должен быть удален. Сначала я подумал о реализации канала каналов, который соединяет P1-P2-P3 -...- PN, чтобы сообщение распространялось по цепочке до предполагаемого. Но прохождение каждого процесса не будет столь же эффективным, как прямая отправка P0, например, инструкции «FORK» в n -й процесс.
------------
| Process P0 |
------------
1) P0 forks P1 /
and they share "pipe1" / 3) Here I need individual pipes P0-P2, P0-P3
/ until P0-PN
/
------------ ------------ --- ------------
| Process P1 |->forks->| Process P2 |->forks-> |...|->forks-> | Process PN |
------------ ------------ --- ------------
2)P1 forks P2
Более того, я Я не уверен, как вилка и трубы будут работать вместе в этом случае. Поскольку ребенок «наследует» файловые дескрипторы своего отца, мне было интересно, будет ли n -й ребенок иметь доступ к файловым дескрипторам всех процессов n-1 , которые предшествуют ему в цепочке и поэтому, возможно, читал на этих трубах тоже.
Я не ищу код как ответ, а предлагаю идею / алгоритм, как организовать создание этой цепочки (используя только неназванные каналы), если это действительно возможно (как я полагаю). Я новичок в языке C и пытаюсь использовать понятия asp, подобные представленным здесь. Я не нашел примеров каналов в таких структурах процессов или, по крайней мере, ни одного, который мог бы дать мне подсказку по этому конкретному случаю c.