term% cat index.txt SRV(3)                     Library Functions Manual                     SRV(3)
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 pro‐
       cesses  may  post open file descriptors to make them available to other
       processes.
       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 may then open  /srv/my‐
       serv 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.
EXAMPLE
       To drop one end of a pipe into /srv, that is, to create a named pipe:
              int fd, p[2];
              char buf[32];
              pipe(p);
              fd = create("/srv/namedpipe", OWRITE, 0666);
              fprint(fd, "%d", p[0]);
              close(fd);
              close(p[0]);
              fprint(p[1], "hello");
       At this point, any process may open and read /srv/namedpipe to  receive
       the  hello  string.   Data written to /srv/namedpipe can be received by
       executing
              read(p[1], buf, sizeof buf);
       in the above process.
SOURCE
       /sys/src/9/port/devsrv.c
                                                                        SRV(3)