как это написать?

Barbie29

есть две проги, обе работают как while(1){sleep 1}, я форкаюсь на два процесса, на STDOUT каждого процесса вываливаются данные от двух while(1){blah-blah-blah}. Надо сделать так, чтобы если из каждого процесса приходит 1 и 1, то выставлялся бы флаг "можно что то делать".
Я придумал сделать для двух процессов доступную на изменение через IPC::Shareable переменную которую надо где-то анализировать, по всей видимости, в третьем процессе.
Что тут можно сделать, форкать пул процессов, где парент будет следить за содержимым общей переменной?
Еще задача усложняется тем, что иногда по запросу пользователя надо выключать логику программы, по видимому, это четвертый процесс.
Короче, проблема в том, как можно было бы сделать архитектуру. Пока такие мысли: итого получается 5 процессов, два контрольных, третий анализирующий первые два и четвертый - переключение на ручное управление. Пятым тогда будет процесс порождающий первые 4-ре.

Barbie29

а если по людски, то есть датчик погоды (процесс делает tail -f на лог). И есть датчик подъема солнца над горизонтом, если солнце под горизонтом, то надо открывать крышу, при условии, что нет дождя. Притом еще надо предусмотреть возможность мужика с молотком, который захочет открыть крышу днем, в том числе и в дождь.

anton7805

думаю, без использования общей памяти тут не обойтись , а вот без 3 процееса, меняющего флаг, вполне, добавив в логику процессов анализатор этого флага(при этом может понадобиться использовать и другие флаги)

Barbie29

да вот блин, и проблема, не 100% это работает, я както шарил память, но иногда оно глюкало почему-то... не очень хотелось бы... но походу, придется делать...

teonazoi

На сколько я понял, у тебя не особо богато с сообщениями, сделай например через сигналы.
Вообще тут куча вариантов. Почитай про межпроцесное взаимодействие. А самый, наверное, общий случай сделать через сокеты.

ppplva

Семафоры, мутексы и прочие межпроцессные твари - работают. Это известный факт. И ,значит, глюки - в твоей программе. Попробуй их исправить
А добавление 3-го процесса - первый шаг по пути "n-ый вотчдог следит за (n-1)-ым".

Barbie29

Ну, вобщем, народ, спасибо, вроде как написал, правда без четвертого процесса.
Оставить комментарий
Имя или ник:
Комментарий: