Externe Programme unter LINUX ausführen

Laocoon

Erfahrenes Mitglied
Hallo zusammen,

ich schreibe gerade an einem Programm, dass unter anderem auch externe Programme nutzen soll.

Im Prinzip funktioniert das Ganze auch mit der exec() Methode der Runtime:
Code:
//...
Process process = Runtime.getRuntime().exec(cmd);
StreamReader reader = new StreamReader(process.getInputStream());
//...
Solange ich Befehle, wie ls, env, ... aufrufe klappt alles bestens. Ich muss allerdings auch einige Programme aufrufen, die nicht root gehören. Das funktioniert unter LINUX allerdings nur, wenn ich mich als eben dieser andere Benutzer einlogge. Auch das Setzten des s-bit hat nicht geholfen (funktioniert denke ich bei .jar Dateien generell nicht?!).

Um die Verwirrung perfekt zu machen, tritt das Problem unter HP-UX (mit gleicher Java Version) nicht auf.

Jemand ne Ahnung woran das liegt, oder vielleicht sogar wie man das Problem lösen kann?

MfG
Daniel
 
Na super :rolleyes:,

nach ewigem suchen bin ich auf das gestoßen.
Habs dann mal mit nem Workaround versucht, indem ich meinen Befehl über die Shell aufrufe. Allerdings werden so die Parameter von meinem Befehl ignoriert.

Java:
Process process = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "cmd",  "param"});

Muss ich ernsthaft jeden Befehl in ein Shell-Script wrappen, damit das funktioniert?
:(

MfG
Daniel
 
Hab nun nochmal nach ewigem rumprobieren und allen möglichen und unmöglichen Varianten das ganze mal so versucht:

Java:
Process process = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "ls -al"});


und siehe da, es geht :rolleyes:
 
Zurück