Problem redirecting stderr to pipe in subprocess

Ken Brown kbrown@cornell.edu
Sun Oct 9 20:28:00 GMT 2011


On 10/9/2011 4:10 PM, jan.kolar wrote:
>
>
> Ken Brown-6 wrote:
>>
>> 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
>>
>
>
> * Does your program work when compiled by gcc-4 (as opposed to gcc-3) ?
>
> --
>
> Because I also spot some problem with it, if gcc-3 is used:
>
> # correct with gcc-4
> $ gcc-4 STC.c&&  ./a.exe
> ls: cannot access neeeee: No such file or directory
> .bashrc*
>
> # custom cygwin1.dll warning with gcc-3 :
> $ gcc-3 STC.c&&  ./a.exe
> #####   Ooops, first in forkee and it is not dll:init; where=dcrt0.cc
> dll_crt0_1()   pozde - je po linked dll::init iwhere=90
> ls: cannot access neeeee: No such file or directory
> .bashrc*
>
> I think I've have never seen the message (its my debug message); if you
> confirm your program makes difference between gcc-3 and gcc-4, I will have
> find out what it means.
> (Probably it is like unexpected ordering of DLL's or ordering of their
> initialization.)

I always use gcc-4.  I've just recompiled with gcc-3, and the results 
are the same.

Ken


--
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