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

Reply via email to