
On Sat, 11 Sep 2010 20:36:17 +0200, Jeremy Maitin-Shepard <jeremy@jeremyms.com> wrote:
[...]
While it's fairly obvious I agree with Ilya (I think he pointed it out) that passing the information to a stream behavior explicitly whether an input or output stream is configured is redundant as stream behaviors are attached to input or output stream delegates anyway.
The main issue is that I would like the same facilities for configuring std{in,out,err} to also be usable for arbitrary file descriptor numbers on POSIX, and for those file descriptors, you cannot assume any particular direction.
Indeed. But as context doesn't support arbitrary file descriptors those must be configured differently anyway. Please have a look at <http://svn.boost.org/svn/boost/sandbox/SOC/2010/process/libs/process/example/file_descriptors_setup.cpp>. There are two pipes used to create file descriptors 3 and 4 which should be inherited by the child process. As the pipe stream behavior is used explicitly the user knows if 3 and 4 should be read or write ends of the pipe. The user can pass the information to the pipe stream behavior while the context indeed can't (in this example there is still a boolean value used).
[...]Note: As I mentioned in another message, I think that the parent-end of the pipe should be returned to the user as part of configuring the stream behavior. This would further reduce confusion and chance of incorrectly configuring the direction. The documentation could also address this.
With pipe you mean the pair of handles created by pipe? Where and why do you want to return it to the user? You want the user to explicitly set the pair of handles in context?
I think I explained this more clearly in another e-mail in reply to you.
I'll try to find it although I slowly get lost in this huge thread. :) Boris