Boost logo

Boost-Build :

Subject: [Boost-build] [ATTN: Noel] Re: [boost] bjam's use of O_NONBLOCK in execunix.c
From: Rene Rivera (grafikrobot_at_[hidden])
Date: 2010-05-06 23:04:56

Taking this to the build list..

On 5/6/2010 12:29 PM, Dan Gohman wrote:
> Why does bjam on "unix" platforms set the O_NONBLOCK flag when creating
> standard output and error pipes from the child process to the parent process?
> This was introduced in change r38009:
> The parent process uses select(2) to block and wait for output from children,
> so it doesn't appear to need non-blocking file descriptors.
> Child processes are unrelated programs, and it seems mistaken to assume that
> they will want their stdout and stderr to be non-blocking. A project that
> I'm involved in recently had to add code to handle EAGAIN from a write(2) call
> by spinning until it succeeds, and it seems to be fairly common practice.
> It would seem to be better if the parent would just leave the file descriptors
> in blocking mode.

Noel Belcourt wrote the Unix command handling so I don't have an answer
as to why. Noel any comment?

-- Grafik - Don't Assume Anything
-- Redshift Software, Inc. -
-- rrivera/ (msn) - grafik/
-- 102708583/icq - grafikrobot/aim,yahoo,skype,efnet,gmail

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at