Связь между дочерними процессами в C POSIX

У меня проблема со связью между дочерними процессами одного и того же отца процесса.

  • Отцовский процесс создает N дочерних процессов.
  • Каждый дочерний процесс имеет идентификатор.
  • ID первого потомка - N, второго - (N-1),... и последнего - (1):

Процесс i мог продолжить работу только после того, как получил сигнал SIGRTMIN от процесса j= i-1 (брат ушел).

Процесс i мог завершиться только после того, как получил сигнал SIGRTMIN+1 от процесса j = i+1 > (брат справа).

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

Вопрос: без использования IPC (очередь сообщений, разделяемая память, семафор) или ввода-вывода (сокет, канал, канал, файлы), как процесс узнает идентификатор процесса своего левого брата? и идентификатор процесса его брата справа.

For the question of brother left, Я использую массив идентификаторов процессов. Точнее, в родительском процессе массив будет хранить идентификаторы процессов каждого созданного им дочернего процесса, когда процесс создается, он знает идентификатор процесса i-1 (процесс имеет ID = N-i+1).

Но я не знаю, как получить идентификатор процесса i+1 (брат прав).


person minh-hieu.pham    schedule 15.05.2014    source источник


Ответы (1)


С сигналами в реальном времени вы можете отправить значение. Поэтому, когда в процессе я отправляю сигнал SIGRTMIN его левому брату, он может отправить свой pid,)

Надеюсь, это поможет вам.

person ludowsky    schedule 15.05.2014
comment
Спасибо за ответ, я думаю, что смогу найти ответ :D - person minh-hieu.pham; 15.05.2014