Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ (3) — Plan9 4th Edition

Media Vault

Software Library

Restoration Projects

Artifacts Sought

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

in the above process. 

SOURCE

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

Plan 9  —  May 15, 2000

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026