NAME
srv – server registry |
SYNOPSIS
bind #s /srv #s/service1 #s/service2
|
DESCRIPTION
The srv device provides a one–level directory holding already–open
channels to services. In effect, srv is a bulletin board on which
processes may post open file descriptors to make them available
to other processes within their srvgroup. To install a channel, create a new file such as /srv/myserv and then write a text string (suitable for strtoul; see atof(2)) giving the file descriptor number of an open file. Any process in the same srvgroup may then open /srv/myserv to acquire another reference to the open file that was registered. An entry in srv holds a reference to the associated file even if no process has the file open. Removing the file from /srv releases that reference. It is an error to write more than one number into a server file, or to create a file with a name that is already being used. When a fork(2) system call creates a new process, both the parent and the child continue to see exactly the same files in the srv device: changes made in either process can be noticed by the other. In contrast, an rfork system call with the RFCSRVG bit set (see fork(2)) causes a split: the new process sees a new srv device with no file descriptors posted, and any services added in one process group cannot be noticed by the other.
|
EXAMPLE
To drop one end of a pipe into /srv, that is, to create a named
pipe:
|
SOURCE
/sys/src/9/port/devsrv.c |