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