Hallo Leute,
mein neuestes Spielzeug ist ein LCD mit einer Auflösung von
20x4 Zeichen. An den Parallelport angeschlossen ergibt das
eine tolle Statusanzeige für z.B. einen Server.
Auf dem Server laufen für gewöhnlich viele verschiedene Prozesse
bzw. Scripte, die evtl. alle mal was auf das Display schreiben
wollen. Da sich das Display nur "in einem Rutsch" beschreiben
lässt, muss sich irgendein zentrales Programm darum kümmern, das
die "Schreib-Forderungen" von anderen Prozessen an sinnvoller
Stelle durchführt.
Dafür habe ich folgende Programme geschrieben: Serverprogramm
(lcdserv) liest jede Sekunde die Datei /tmp/lcd.stat und stellt
den Inhalt (genau 80 Zeichen) auf dem LCD dar. Beschreiben des
LCD ist mit dem Client (lcdclient) durch Angabe der Startposition
(0-79) und eines Ascii-Strings möglich. lcdclient ist suid und
darf als einziger auf /tmp/lcd.stat schreiben.
Verschiedene Scripte auf dem Server rufen nun mehr oder weniger
häufig den lcdclient auf, weil sie ihren aktuellen Status auf
dem Display zeigen wollen. Beispiel: jede Sekunde wird die
Anzeige des freien Speichers auf den zwei /home-Partitions an-
gezeigt. Diese Scripts verschlingen im Vergleich zum lcdserver
(der ja auch jede Sekunde etwas tut) riesig viel Rechenzeit.
Deshalb will ich über mehrere kleine C-Programme /proc oder den
Status der Modemleitung abfragen. Diese Programme müssten dann
aber irgendwie Kontakt zum lcdserver aufnehmen können, der ideal-
erweise seine Image-Datei /tmp/lcd.stat nicht mehr benötigt.
Deshalb: Wie kann ich Prozesse unter Linux am einfachsten mit-
einander kommunizieren lassen, wenn es einen Server-Prozess
und eine beliebig wechselnde Menge an Client-Prozessen geben soll?
Für ein hilfreiches Stichwort wäre ich sehr dankbar, gehört habe
ich schon einmal Begriffe wie IPC, Sockets etc..., weiß aber
nicht, was jetzt wo einzuordnen ist.
Viele Grüße,
Matthias
--
Matthias Petermann ----------------------------------------------
gpg: 1E3D E373 0CCA AD8A D203 B210 8260 ED77 95D7 030D ---------