tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: fcntl & cmsg
On Sep 19, 2014, at 12:38 PM, James K. Lowden 
<jklowden%schemamania.org@localhost> wrote:
>            "The received descriptor is a duplicate of the sender's
> descriptor, as if it were created with a call to dup(2).  Per-process
> descriptor flags, set with fcntl(2), are not passed to a receiver."
is the descriptor sharing the its reference with another descriptor (which 
happens with dup(2)/dup(2)) or did get a separate reference via a open or 
socket call?
if you have a dup'ed file descriptor, setting an attribute on it affects all 
the other descriptors dup'ed from it..  If you open a file multiple times, each 
descriptor is a separate reference and setting an attribute on one doesn't 
affect the others.
There are two levels of reference involved.  A descriptor indexes into a table 
of file structure pointers.  dup/dup2 simply duplicates file struct pointer for 
one descriptor into a new slot increasing its reference count by one.
socket/open/creat allocate a new file structure and insert a pointer to the new 
file structure into the table.  It's this file structure which keep attribute 
of a file descriptor.
Home |
Main Index |
Thread Index |
Old Index