1.7.9 Missing SIGPIPE?
Tue Oct 4 14:33:00 GMT 2011
On 10/4/2011 4:09 PM, Christopher Faylor wrote:
> On Tue, Oct 04, 2011 at 04:00:13PM +0200, Marco Atzeri wrote:
>> On 10/4/2011 3:53 PM, Peter Rosin wrote:
>>> Peter Rosin skrev 2011-09-28 17:26:
>>>> When I use bash to build pipelines, they sometimes don't finish but
>>>> instead some process remains running. Example:
>>>> $ tail -f -n 10000 log.txt | grep . | head -n 2
>>>> Almost instantly I get the expected two lines of output, but no prompt
>>>> back. I have to use ctrl-c. If I don't ctrl-c I can run pstree in
>>>> another terminal and see this:
>>>> $ pstree
>>> This example is a poor one, as tail simply waits for a new line, when it
>>> gets a new line it forwards it to the pipe and promptly receives a
>>> SIGPIPE as grep is not there anymore.
>>> I'll get back when I have distilled a better STC. If I can...
>> Hi Peter,
>> are you referring on something like SIGHUP on PTY closure ?
> Note that this thread contains your assertion that something isn't
> happening correctly but it isn't clear that your analysis is correct.
> But, no, SIGPIPE != SIGHUP and the above example clearly shows a
> completely different scenario than what is described in the above
I know that SIGPIPE != SIGHUP, but Peter mentioned that the example
is not really representative of the PIPE problem he found, so eventually
he catched the same problem I saw on mc.
Of course, it could be a different one.
Referring to the SIGHUP thread
This portion of the standard, if I am not wrong,
it is not currently implemented in cygwin:
"If fildes refers to the master side of a pseudo-terminal, and this is
the last close, a SIGHUP signal shall be sent to the controlling
process, if any, for which the slave side of the pseudo-terminal is the
controlling terminal. It is unspecified whether closing the master side
of the pseudo-terminal flushes all queued input and output."
The workaround I implemented in mc was to send the SIGHUP to the
subshell, before mc exit, instead on relying on cygwin to do it.
Am I misundestanding the standard ?
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
More information about the Cygwin