Yes you can, using sendmsg()
with SCM_RIGHTS from one process to another:
SCM_RIGHTS
- Send or receive a set of
open file descriptors from another
process. The data portion contains an
integer array of the file descriptors.
The passed file descriptors behave as
though they have been created with
dup(2)
.
http://linux.die.net/man/7/unix
That is not the typical usage though. More common is when a process inherits sockets from its parent (after a fork()
). Any file handles (including sockets) not closed will be available to the child process. So the child process inherits the parent's sockets.
A server process that listens for connections is called a daemon. This usually forks on each new connection, spawning a process to handle each new request. An example of the typical daemon is here:
http://www.steve.org.uk/Reference/Unix/faq_8.html#SEC88
Scroll down to void process()
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…