
Ich brauche einen Mechanismus, mit dem zwei Prozesse kommunizieren können. Prozess A erledigt eine Aufgabe und wartet auf die Eingabe [Dateipfad] von einem anderen Prozess B. Dies sollte bei jedem Neustart der Linux-Maschine geschehen.
Wie oft dies geschieht, wird durch die Anzahl im Prozess A gesteuert.
Ich habe darüber nachgedacht, dies mit dem systemd-Dienst zu tun, konnte aber keine Eingabe erhalten.
Antwort1
Eine Möglichkeit hierfür wäre die Verwendung eines Sockets. Dies setzt natürlich voraus, dass Sie in Ihren Prozessen Netzwerk-Socket-Bibliotheken verwenden müssen, aber dies ist die gängigste Methode, um die Kommunikation zwischen zwei Prozessen zu ermöglichen.
Da sich die beiden Prozesse auf derselben Maschine befinden, empfehle ich Ihnen, einen systemd-UNIX-Socket zu konfigurieren.
Anschließend kann sich Prozess A mit dem Socket verbinden, um abzuhören, und Prozess B kann Daten darüber senden.
Solange Ihre Prozesse vollautomatisch ablaufen, selbstständig Daten abhören und senden und kein manuelles Eingreifen erfordern, spielt es keine Rolle, ob es sich um systemd-Dienste handelt oder nicht. Sorgen Sie einfach dafür, dass sie Informationen in Dateien oder im Journal protokollieren, damit Sie debuggen können, was passiert.
Hier sind einige Links, die Ihnen den Einstieg erleichtern:
systemd.socket-Handbuch
Eine kurze Anleitung zum Einrichten eines Dienstes mit einem Socket in systemd
Die allgemeine Idee hinter der Interprozesskommunikation in C