X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_NEUTRAL X-Spam-Check-By: sourceware.org Message-ID: <4E9203EA.2070801@cornell.edu> Date: Sun, 09 Oct 2011 16:28:26 -0400 From: Ken Brown User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1 MIME-Version: 1.0 To: cygwin AT cygwin DOT com Subject: Re: Problem redirecting stderr to pipe in subprocess References: <4E906DD1 DOT 50107 AT cornell DOT edu> <32620821 DOT post AT talk DOT nabble DOT com> In-Reply-To: <32620821.post@talk.nabble.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com 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