FHEM Forum

FHEM => Sonstiges => Thema gestartet von: ulli am 01 Oktober 2018, 21:22:26

Titel: Subprocess steuern
Beitrag von: ulli am 01 Oktober 2018, 21:22:26
Hallo zusammen,
ich suche und probiere nun schon seit einigen Tagen ein Programm aus Perl heraus zu starten, dessen Ausgabe zu überwachen und steuerbefehle abzusetzten.
Das Programm ist in cpp und es handelt sich um eine consolen anwendung.

Ich will also aus Perl das proGramm starten und dann über stdin und stdout des Terminals das Programm steuern.
Ich habe herausgefunden das IPC::RUN start geeignet wäre, ich bekomme es aber nicht ans laufen.
Hat einen evtl einen Beispielcode für so eine Anwendung?
Das wäre super!
Titel: Antw:Subprocess steuern
Beitrag von: ulli am 02 Oktober 2018, 20:40:31
Kann keiner helfen?
Titel: Antw:Subprocess steuern
Beitrag von: Wuppi68 am 02 Oktober 2018, 21:25:12
hmmmm,

hier https://metacpan.org/pod/IPC::Run gibt es doch auch Beispiele ... aber auf diese Art und Weise musst Du auf jeden Fall den Output pollen --> nicht so gut

da könnte es deutlich eleganter sein, ein Modul zu schreiben, welches folgende minimal Funktionen hat

start: führt einen Befehl im Hintergrund aus
write: schreibt in STDIN vom Prozess
read: liest von STDOUT vom Prozess
error: liest VON STDERR

optional signal: sendet ein Signal zum Prozess

readings:
charAvail --> Zeichen im Puffer von STDIN
lineAvail --> Zeile im Puffer
charCnt --> Zeichen im Puffer

...
Titel: Antw:Subprocess steuern
Beitrag von: ulli am 05 Oktober 2018, 17:47:34
Du meinst aus Perl heraus?
Das polling bei ipc Run stört mich auch, weil es das Programm blockiert und die CPU last auf 90%ansteigen lässt.
Titel: Antw:Subprocess steuern
Beitrag von: CoolTux am 05 Oktober 2018, 19:02:25
Erstellt Dein Programm zufällig ein Unix-Domain-Socket? Dann wäre das DevIO Modul eine Option.
Titel: Antw:Subprocess steuern
Beitrag von: ulli am 07 Oktober 2018, 17:45:23
Zitat von: CoolTux am 05 Oktober 2018, 19:02:25
Erstellt Dein Programm zufällig ein Unix-Domain-Socket? Dann wäre das DevIO Modul eine Option.

Der Tipp war Goldwert!
Habe jetzt einen Socket Server erstellt und öffne diesen in FHEM mit UNIX:STREAM!

Danke!