
Hi,
ich hab hier ein kleines Problem mit subprocess.Popen, wenn ich einfach mittels
cmd = ['java', '-jar', '/home/andreas/eclipse/plugin/org.eclipse.equinox.jar','-application', 'org.eclipse.and.core.antRunner' -buildfile', 'build.xml', 'build.jars'] proc = Popen(cmd)
versuche den Build eines Eclipse plugins zu starten, startet Eclipse die komplette GUI. Sobald ich Popen(" ".join(cmd), shell=True) ausfuehre klappt das ganze wie erwartet.
Hat jemand nen Tipp in welcher Richtung ich da suchen koennte? Gibts bei Popen noch irgendwelche Unterschiede, ausser das das ganze in einem /bin/sh gekapselt wird?
Andreas

Andreas Pakulat schrieb:
ich hab hier ein kleines Problem mit subprocess.Popen, wenn ich einfach mittels
cmd = ['java', '-jar', '/home/andreas/eclipse/plugin/org.eclipse.equinox.jar','-application', 'org.eclipse.and.core.antRunner' -buildfile', 'build.xml', 'build.jars'] proc = Popen(cmd)
versuche den Build eines Eclipse plugins zu starten, startet Eclipse die komplette GUI. Sobald ich Popen(" ".join(cmd), shell=True) ausfuehre klappt das ganze wie erwartet.
Was erwartest du denn?
Was passiert wenn du statt '" ".join(cmd)' einfach 'cmd' verwendets? Sollte laut subprocess Doku auch funktionieren.
Chris

Hi,
versuche den Build eines Eclipse plugins zu starten, startet Eclipse die komplette GUI. Sobald ich Popen(" ".join(cmd), shell=True) ausfuehre
Aus Sicherheitsgründen sollte man bei shell=True, nie, nie, nie einen Komando-String übergeben. außer man ist sich ganz, absolut, super sicher, das nie, jemals, irgendwie da ein Shell-Meta-Charakter hineinkommen kann.
Darum einfach immer -- ohne zu überlegen -- das cmd-Array übergeben. :-)
klappt das ganze wie erwartet.
Das heißt "wie erwartet"?

On 01.04.08 19:03:55, Hartmut Goebel wrote:
Hi,
versuche den Build eines Eclipse plugins zu starten, startet Eclipse die komplette GUI. Sobald ich Popen(" ".join(cmd), shell=True) ausfuehre
Aus Sicherheitsgründen sollte man bei shell=True, nie, nie, nie einen Komando-String übergeben. außer man ist sich ganz, absolut, super sicher, das nie, jemals, irgendwie da ein Shell-Meta-Charakter hineinkommen kann.
Darum einfach immer -- ohne zu überlegen -- das cmd-Array übergeben. :-)
Klappt nicht, dann wird nur java ausgefuehrt, ohne weitere Argumente, weil ja die restlichen Eintraege als Parameter an die Shell uebergeben werden.
Aber darum mache ich mir erstmal keine Gedanken, das Tool ist sowieso nur fuer den internen Gebrauch und die Argumente werden auch noch gequotet.
klappt das ganze wie erwartet.
Das heißt "wie erwartet"?
Na dass auch ohne eine Shell der antRunner laeuft und nicht die GUI startet. (antRunner arbeitet ein ant-Buildfile ab und gibt nur was auf stdout/stderr aus)
Andreas
participants (3)
-
Andreas Pakulat
-
Christopher Arndt
-
Hartmut Goebel