From: Philip J. <pj...@un...> - 2009-08-19 02:04:37
|
On Aug 18, 2009, at 4:28 AM, Mayne, Peter wrote: > Consider: > > >>> import os > >>> os.system(‘vim file.txt’) > > Using CPython, this does what you’d expect. Using Jython, this > doesn’t: I get > > >>> Warning: Output is not to a terminal > >>> Warning: Input is not from a terminal > > then depending on circumstance, on Linux I get a vim that can’t be > typed into, or is stuck in insert mode; on Windows vim uses all > remaining CPU. In both cases I have to kill the vim process to get > out. > > What’s happening here? Is it possible to make this work as expected? We're limited by Java with what we can do with the input/output to subprocesses. It sounds like Java 7 will finally allow us to do this, though A workaround is to explicitly direct in/out/err to your controlling tty. I don't think there's an easy way to determine the controlling tty from Jython, though. E.g.: $ tty /dev/ttys000 $ jython Jython 2.5.0+ (trunk:6694, Aug 18 2009, 12:20:17) [Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_13 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> os.system('vim < /dev/ttys000 > /dev/ttys000 2>&1') -- Philip Jenvey |