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