Hallo Leute, Mein Problem: Ich habe diverse Konsolenprogramme, die Systemzustände abfragen und überwachen. Nun will ich diese auf eine Mono C# GUI benutzen. Aber ich habe keinen blassen Schimmer, wie ich eine Konsolenapp dazu bringen kann, den "Textstring" den es erzeugt abzufragen oder ein neues Komando zukommen zu lassen. Klar, ich könnte etwas wie PROGblafasel >> var machen, also die Ausgabe der App mir umpipen, aber die Apps sollen nur einmal gestartet werden (jede App läuft in einem eigenen Thread) und dann öfter mal abgefragt werden, ohne einen neuen Aufruf der App machen zu müssen.
Doch, Pipelines sind genau der richtige Ansatz. http://www.gnu.org/software/libc/manual/html_node/Pipe-to-a-Subprocess.html#Pipe-to-a-Subprocess
Gibt es da nicht noch so etwas wie tee, womit man eine pipe in datei und stdout splitten kann? Eine andere Lösung könnte mit socat möglich sein, wobei die Ausgabe auf socat (socket-cat) geschickt wird und die Anwendungen sich per TcpIp-Socket-Verbindung damit versorgen lassen. Das klappt dann auch mit beliebig vielen Clients (die GUI-Anwendungen) simultan. socat kann dafür eine pipe-FIFO-Datei erzeugen, die als Verbindungsstelle "zum Füttern" verwendet wird. Es lohnt sich einmal die Doku zu socat zu studieren.
Jubb, tee ist eine Abzweigung :-) Socat lohnt auf jeden Fall, läuft aber halt auch auf Pipe heraus. Für alles Weitere müsste der Fragende mehr Informationen rausrücken...
Vielleicht socat so configurieren, daß eine virtuelle Schnittstelle entsteht, also ein Pseudo-Terminal, und dabei socat einen Device-Link erzeugen lassen. Die Daten erzeugenden Terminals können dann ihre Daten auf das "Device" schicken; socat liest die Daten und verteilt sie an die GUI-Anwendung(en). - So würde ich das versuchen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.