Процесс ожидает ввода от другого процесса

Процесс ожидает ввода от другого процесса

Мне нужен механизм, в котором 2 процесса должны взаимодействовать. Процесс A будет выполнять некоторую работу и ждать ввода [путь к файлу] от другого процесса B. Это должно происходить каждый раз при перезагрузке машины Linux.

Количество таких событий контролируется счетчиком в процессе A.

Думал сделать это с помощью службы systemd, но не смог получить никаких входных данных.

решение1

Для этого можно использовать сокет. Конечно, это подразумевает, что вам нужно использовать библиотеки сетевых сокетов в ваших процессах, но это наиболее распространенный способ позволить двум процессам общаться.

Поскольку оба процесса находятся на одной машине, я предлагаю вам настроить unix-сокет systemd.

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

Пока ваши процессы полностью автоматизированы, прослушивают и отправляют данные самостоятельно и не требуют ручного вмешательства, неважно, являются ли они службами systemd или нет — просто заставьте их регистрировать информацию в файлах или в journald, чтобы вы могли отладить происходящее.

Вот несколько ссылок, которые помогут вам начать:
systemd.socket руководство
Краткое руководство по настройке службы с сокетом в systemd
Общая идея межпроцессного взаимодействия в языке C

Связанный контент