On 2006-06-07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > How do I automatically redirect stdout and stderr when using os.popen2 > to start a long running process.
popen2 does redirect stdout to a file object. That's the whole point of using it. If you don't want a file object that's connected to the child's stdout, then don't use popen2. > If the process prints a lot of stuff to stdout it will > eventually stop because it runs out of buffer space. Once I > start reading the stdout file returned by os.popen2 then the > process resumes. I know that I could just specify > /dev/null > when starting the process but I'd like to know if there is a > way to start a process using os.popen2 or some other way so > that all standard out and standard error goes to /dev/null or > some other file. Yes. Fork a child process then use the standard file descriptor operators to open /dev/null or some other file and then dup those file descriptors to stdout/stderr: http://docs.python.org/lib/os-fd-ops.html Then you can exec the program you want to run: http://docs.python.org/lib/os-process.html This is basically identical to the method use to do I/O redirection in C, so any decent book on C programming under Unix should have a good explanation. Hmmm, it looks like it's simpler touse the subprocess module. Just open /dev/null to get a file descriptor for it, and then pass that to subprocess.Popen(): http://docs.python.org/lib/module-subprocess.html -- Grant Edwards grante Yow! I selected E5... but at I didn't hear "Sam the Sham visi.com and the Pharoahs"! -- http://mail.python.org/mailman/listinfo/python-list