capture stdout and stderror from within a Windows Service?

Tim Golden mail at timgolden.me.uk
Fri May 15 09:06:33 EDT 2009


Chris Curvey wrote:
> Ahhh, Blake put me on the right track.  If you want any of the
> streams, you have to supply values for all of them, like so:
> 
> p = subprocess.Popen(step, shell=True
>       stdout=subprocess.PIPE,
>       stdin=subprocess.PIPE,
>       stderr=subprocess.PIPE)
> 
> (stdout, stderr) = p.communicate()
> 
> and, incidentally, it appears that you have to use UNC paths in your
> Popen call -- drive letters won't work.


This is because you're running in a service. Drive letters
aren't system wide: they're per-user. The service won't
know about any drive letters you or anyone else happens
to have mapped.

TJG



More information about the Python-list mailing list