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);
     Page 1                       Plan 9             (printed 11/4/25)
     SRV(3)                                                     SRV(3)
          in the above process.
     SOURCE
          /sys/src/9/port/devsrv.c
     Page 2                       Plan 9             (printed 11/4/25)