Starten eines Prozesses, wenn ein Port angeschlossen ist
Frage
Ich möchte Daten von allen viele Arbeitsplätze auf dem gleichen LAN einen einzelnen Client, dass Fragen Unicast-Anfragen erstellen. Der Kunde wird wahrscheinlich laufen Linux, aber die Arbeitsplätze können jedes Betriebssystem ausgeführt werden. Ist es möglich, einen Daemon auf jedem der Arbeitsplätze zu vermeiden, laufen und noch haben sie innerhalb von wenigen Sekunden auf Anfragen antworten? Ich mag einen Daemon vermeiden erstellen, da der Dienst selten verwendet werden kann, und ich will nicht die Arbeitsplätze mit einem anderen Prozess zu belasten.
Lösung
Schauen Sie sich auf geeignete Implementierungen von inetd
für Ihre Ziel-Betriebssystem. Dieser Service Streams für Verbindungen und delegiert die eigentliche Kommunikation auf Ebene IO durch stdin / stdout zu einer Instanz des Prozesses (die bei Bedarf hervorgebracht werden):
Das inetd utility [..] Streams für Verbindungen über bestimmte Internet Steckdosen. Wenn eine Verbindung gefunden auf einer seiner Steckdosen, entscheidet er, was Dienst der Buchse entspricht, und ruft ein Programm, um die Anforderung zu bedienen. Das Server-Programm wird mit dem Servicebuchse als seine Standardeingabe aufgerufen wird, Ausgabe- und Fehler Deskriptoren. Nachdem das Programm beendet ist, inetd weiter auf dem Sockel zu hören [..]