popen3 on windows and interactive subprocesses

Brian Sturk bsturk at news.rcn.com
Fri Dec 14 03:41:54 CET 2001


>> I have a script that is run from within the editor vim.  It uses 
>> popen2.popen3 to run cmd.exe.  I then grab stdout and submit commands
>> to it via stdin. It works pretty well right now except for one thing.
>> When I spawn an *interactive* process, like ftp or cleartool I no longer
>> see anything on stdout after it's launched. Is this possibly because
>> the app is writing directly to the win32 console?  Any help/ideas greatly
>> appreciated.
> 
> It depends on the application.  It could be that it is writing
> directly to the console, but it could also just be that it is
> buffering its output since it is no longer talking directly to a
> console.  Interactive applications often show this quickly because
> they print a prompt, but no newline, and then wait for input.  The
> lack of newline prevents line buffering from flushing that line.
> 
> You'll see this issue even with Python itself unless you manually
> specify non-buffered with '-u' on the command line.
> I don't know of a good way under Windows to defeat this unless the
> application has such an option.  

Thanks for your help.

Just as test I tried running python -u in this environment and
got some output but it looked like garbage, I can look into that
so at least I can support running python with -u.  I'm wondering
if there are any Windows APIs I could use that would get me
the data?

> Under Unix, you can use something
> like a pty to make the application think it's actually talking to a
> terminal although doing so portably across systems can be a black art
> mastered by few (such as 'expect').

Under Unix I am using pty, and it works *much* better.  I also looked
at some of the python expect modules and they seem to be tailored
for unix.  The one that seemed to be general purpose ( at ftp.obsidian... )
didn't allow anonymous logins.  :(

--
.-----------------------------------------------------,-------.  
| Brian M. Sturk - http://www.nh.ultranet.com/~bsturk \ C/C++ |  .>   )\,^a__
|--------------------------|  bsturk at nh.ultranet.com   | Java | (  _ _)/ /-." ~
| http://www.telengard.com `---------------------------`------|  `( )_ )/
| Telengard Technologies Inc. -  NT/*nix UI & device drivers  | _<_s_<_s
'-------------------------------------------------------------'



More information about the Python-list mailing list