glenda.party
term% ls -F
term% pwd
$home/manuals/9front/3/srv
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)