From: Philip J. <pj...@un...> - 2012-05-21 20:29:32
|
On May 21, 2012, at 4:59 AM, Pekka Klärck wrote: > 2012/5/16 Oscar Steele <osc...@gm...>: >> >> Note, I printed out dir(Popen()) and I do see methods like communicate(), wait(), and poll() but not terminate() or send_signal(). > > According to the documentation [1], both terminate() and send_signal() > were added in Python 2.6 and thus they missing from Jython 2.5.x isn't > surprising. I just noticed there's Jython 2.7 alpha 1 available [2] so > you could try that. If Frank and others haven't yet updated > subprocess, I'm sure they are very interested in any help regarding to > that. > > [1] http://docs.python.org/library/subprocess.html > [2] http://fwierzbicki.blogspot.com/2012/05/jython-27-alpha1-released.html This came up on the IRC channel recently (maybe that was also Oscar?) 2.6 indeed added those and kill(). Jython 2.7 should be able to support kill but it probably won't be able to fully support the other API calls (without fully hacking around java.lang.Process/Builder). Note that the 2.7 alpha shipped with a broken kill(), however. There's actually an undocumented way to kill the process in 2.5 by accessing Popen's _process attribute (the underlying java.lang.Process), e.g.: $ dist/bin/jython Jython 2.5.3+ (2.5:c62b1a8fa99b, May 21 2012, 12:56:50) [Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_31 Type "help", "copyright", "credits" or "license" for more information. >>> import subprocess >>> p = subprocess.Popen(['/bin/sleep', '60']) >>> p._process java.lang.UNIXProcess@40395aaf >>> p._process.destroy() >>> -- Philip Jenvey |