Forum: PC-Programmierung [linux] Daten aus konsolenprogramm abfragen


von Paulaner (Gast)


Lesenswert?

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.

von Sven P. (Gast)


Lesenswert?


von Manfred (Gast)


Lesenswert?

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.

von Sven P. (Gast)


Lesenswert?

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...

von Manfred (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.