Can I open a socket and pass it to another process in Linux

后端 未结 1 430
太阳男子
太阳男子 2020-11-27 04:23

In Linux, is it possible for me to open a socket and pass the socket to another process? If yes, can you please tell me where I can find an example?

Thank you.

相关标签:
1条回答
  • 2020-11-27 05:04

    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().

    0 讨论(0)
提交回复
热议问题