Problem redirecting stderr to pipe in subprocess
Ken Brown
kbrown@cornell.edu
Sat Oct 8 15:36:00 GMT 2011
The attached STC arose from my attempt to understand the problem
discussed starting in
http://cygwin.com/ml/cygwin/2011-09/msg00405.html .
I'm starting a new thread because there appears to be a Cygwin problem
having nothing to do with emacs.
The STC creates a pipe and then runs `bash -ic ls' in a subprocess, with
both stdout and stderr sent to the pipe. The parent process reads from
the pipe and echoes it to the terminal.
On Linux, I first get the error messages (presumably expected)
bash: cannot set terminal process group (-1): Invalid argument
bash: no job control in this shell
followed by the directory listing. On Cygwin, the bash process produces
no output but is simply stopped, and I have to kill it from another
terminal before the main program will exit. This happens both with
cygwin-1.7.9 and the latest snapshot. Here are a few comments:
1. The problem disappears if I don't send bash's stderr to the pipe.
2. The problem also disappears if I replace -ic by -c in the call to
bash, presumably because there's nothing sent to stderr in that case.
3. The problem disappears if I don't use a pipe but just have the bash
subprocess write to the terminal, even if I redirect bash's stderr to
stdout.
Ken
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: bash-ls.c
URL: <http://cygwin.com/pipermail/cygwin/attachments/20111008/068a6a4d/attachment.c>
-------------- next part --------------
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin
mailing list