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", 1, 0666); sprint(buf, "%d", p[0]); write(fd, buf, strlen(buf)); close(fd); close(p[0]); write(p[1], "hello", 5); At this point, any process may open and read /srv/namedpipe to receive the hello string. Data written to /srv/namedpipe will be received by executing read(p[1], buf, sizeof buf); in the above process. SOURCE /sys/src/9/port/devsrv.c SRV(3)