SRV(3)                                                     SRV(3)

          srv - server registry

          bind #s /srv


          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

          To drop one end of a pipe into /srv, that is, to create a
          named pipe:

               int fd, p[2];
               char buf[32];

               fd = create("/srv/namedpipe", OWRITE, 0666);
               fprint(fd, "%d", 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);

     Page 1                       Plan 9             (printed 7/23/24)

     SRV(3)                                                     SRV(3)

          in the above process.


     Page 2                       Plan 9             (printed 7/23/24)