Здравствуйте.
Прошу людей, близких к миру C, посоветовать, поправить мои (скудные) представления о том, как должна выглядеть модульная система на C.
Пусть это будет кофеварка и лампа, управляемые через браузер. Кофеварка подключена к компьютеру через COM-порт. А лампа - через TCP. И есть, собственно, пользователь, отдающий команды через браузер по websockets.
Итого имеем как минимум 4 процесса - драйвер кофеварки, драйвер лампы, обработчик websockets-подключения. И основной процесс, координирующий действия первых трех. Назовем его Менеджер.
Я представляю себе это таким образом: менеджер - исполняемый файл. А три других модуля - динамические библиотеки. Менеджер загружает модули и вызывает в них некую функцию «start», которая форкает модуль и он приступает к управлению устройством.
И здесь у меня вопрос: насколько приемлимо использовать libuv в Менеджере? Я читал, что всё, что связано с процесами - чрезвычайно непереносимо. И что мультизадачность очень сложна и лучше ее всячески избегать.
Как обмениваться информацией между процессами? Можно ли обойтись трубами или придется использовать какой-нибудь nanomsg/0mq?
Можно ли передавать между процессами структуры прямо из памяти или придется сериализовать/десериализовать? Как вообще обычно передают сообщения между процессами?
Или всё тут написаное полная хрень и лучше делать по-другому?