On Tue, 4 Jul 2006, Edwin Eyan Moragas wrote:
> On 7/4/06, Bernd Schoeller <[EMAIL PROTECTED]> wrote:
> > > 1) when it says "exact copy", does this mean just a copy of the process?
> > > is it right to state that the memory allocated by the parent process is
> > not
> > > accessible to the child process?
> >
> > Yes, copy is not the original (though normally Unix-OSs do a lazy
> > copy-on-write after a fork).
> >
> > If you want shared memory between partent and child, have a look at
> > shmat (2).
>
> i'm actually interested in socketpair(2). and fork(2). please see below.
>
> >
> > > 2) "The child process has its own copy of the parent's descriptors." i
> > take
> > > this to mean all file and socket descriptors which both parent and child
> > > can write and read to. am i correct?
> >
> > It means all file descriptors of the partent process at the time of
> > the fork will be copied to the child process. As a result, there will
> > be two processes able to write to the same file. You might have a look
> > at pipe(2) to see the benefits of this.
> >
>
> pipe(2) as implemented by openbsd is capable of bidirectional traffic
> according to the manpages. this is nifty but the man pages discourages
> the use of the bidirectional feature. thanks for pointing me out to this.
>
> i was thinking of using socketpair(2) to communicate between forked
> processes. the question is which is better to use for more portable
> apps? pipe(2) is dictated by POSIX while socketpair(2) is X/Open.
socketpair() is also in posix.
> i can probably use two pipes instead of socketpair. which would be
> better. your opinions would be highly appreciated.
Two pairs of pipes might give you better performance, but you can't
beat the simplicity of socketpair().
-Otto