• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Automatische Eingabe für ein Shell-Programm

Hallo Forum,

habe folgendes Problem, dass ich von Java aus einem Shell-Programm "ferngesteuert" eine Eingabe übermitteln will. Also z.B

bash$> start prg

prg>input xyz;
prg>compute output;

prg soll das Shell-Programm darstellen mit Prompt, auf die die Eingabe gehen soll. Habe es schon per Runtime.exec() unter Java vergeblich versucht. Vermutlich muss ich irgendwie an den Prozess heran, aber ich habe keine Ahnung wie ich das handeln soll. Möglicherweise krieg ich aber ein C-Programm hin, dass ich per JNI wrappen kann.

vg,
fuse.
 
ich bin kein java-Experte... aber kannst Du bei einem exec-Aufruf die stdin und stdout umlenken? dann müsste es reichen die intern auf einen Stream abzubilden und dann zu verwenden
 
A

Anonymous

Gast
Nur mal so ne Idee, nicht die feine englische Art, aber der Zweck heiligt bekanntlich die Mittel, habe ich irgenwann schon mal gemacht, ist aber schon länger her und genau weiß ich das auch nicht mehr, was ich da gemacht habe.

unter /proc/PID/fd/ liegen die offenen Files der Prozesse auch 0 1 und 2, die kann man auch direkt dort anzapfen.

robi
 
so, heute hab ich wieder Zugriff auf meine private Bibliothek ;) und mal kurz nachgesehen:

Runtime::exec gibt ein java.lang.Process zurück und das kennt getOutputStream, getInputStream und getErrorStream hier kannst Du dann mit entsprechenden Writer-Klassen auf die Streams schreiben...

die Idee von robi finde ich bei java weniger gut :) immerhin ist java im Prinzip Plattformneutral und das ist bei /proc... nicht gegeben.
 
Oben