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