Thread Frage zu sysread (18 answers)
Opened by bianca at 2013-10-01 09:18

martin.g
 2013-10-02 15:41
#170906 #170906
User since
2013-09-20
40 Artikel
BenutzerIn
[default_avatar]
IPC::Run habe ich gerade mal unter Windows getestet. Ist der gleiche Käse in grün. Zur Ausführung einzelner Kommandos kann man es wahrscheinlich gebrauchen, aber für richtige IPC scheint es auch nicht rund zu laufen. Im Prinzip ist es auch logisch, denn woher soll irgendein Modul der Welt wissen, dass alle Daten da sind und Du nun gerne etwas eingeben würdest. Du erkennst das an der Kommandozeile des Programms auch nur aus dem logischen Verständnis. Entweder weil nichts mehr kommt oder weil es Dir der Inhalt klar macht. Effektiv wissen, dass nichts mehr kommt, kannst Du nicht.

Ich würde mir an Deiner Stelle selbst was bauen und auf IPC::Open3 basieren lassen. Für meine SSH Problematik habe ich es auch so gemacht.
Du arbeitest zum Fremdsystem hin non-blocking, für Dich aber blocking. Wenn Du viel kommunizieren willst, würde ich dafür eine Klasse bauen, dass Du den Mist nur einmal hast.
- Verbindung aufbauen
- senden (das sollte kein Problem sein)
- lesen (in mehr Varianten - zeitgesteuert und ausgabegesteuert)

Deine Klasse liest also solange, bis Dein eigener Timeout (einfach was kleines per time()) erreicht ist, z.B. 2 Sekunden. Oder bis ein bestimmter Rückgabewert erreicht ist, den Du der Methode übergeben kannst.

View full thread Frage zu sysread