Subprocess steuern

Begonnen von ulli, 01 Oktober 2018, 21:22:26

Vorheriges Thema - Nächstes Thema

ulli

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!

ulli


Wuppi68

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

...
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

ulli

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.

CoolTux

Erstellt Dein Programm zufällig ein Unix-Domain-Socket? Dann wäre das DevIO Modul eine Option.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ulli

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!