SRV(3)                                                     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 bul-
          letin board on which processes may post open file descrip-
          tors 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/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.

     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);

     SRV(3)                                                     SRV(3)

          in the above process.

     SOURCE
          /sys/src/9/port/devsrv.c