.TH 9PSERVE 4
.SH NAME
9pserve \- announce and multiplex 9P service
.SH SYNOPSIS
.B 9pserve
[
.B -lnv
]
[
.B -A
.I aname
.I afid
]
[
.B -M
.I msize
]
.I addr
.SH DESCRIPTION
On Plan 9, when a user-level file server mounts itself into a name space
or posts itself in 
.BR /srv ,
the Plan 9 kernel multiplexes the potentially many processes 
accessing the server into a single 9P conversation.
The user-level server need not concern itself with how many
processes are accessing it or with cleaning up after a process when it
exits unexpectedly.
On Unix,
.I 9pserve
takes the place of the Plan 9 kernel, multiplexing clients onto
a single server conversation and cleaning up after clients when
they hang up unexpectedly.
.PP
.I 9pserve
announces a 9P service on
.I addr
and multiplexes any 9P clients connecting to
.I addr
into a single conversation with a 9P server on
.IR 9pserve 's
standard input and output.
When a client hangs up, 
.I 9pserve
flushes any outstanding 9P transactions 
and clunks any outstanding fids belonging to the client.
.PP
.I 9pserve
is typically not invoked directly; use
.IR post9pservice (3)
instead.
.PP
The options are:
.TP
.B -l
logging; write a debugging log to
.IB addr .log \fR.
.TP
.B -n
no authentication; respond to Tauth
messages with an error (see 
.IR attach (9P)).
.TP
.B -v
verbose; more verbose when repeated
.TP
.B -A
rewrite all attach messages to use
.I aname
and
.IR afid ;
used to implement
.IR srv (4)'s
.B -a
option
.TP
.B -M
do not initialize the connection with a
.B Tversion
message;
instead assume 9P2000 and a maximum message size of
.IR msize
.PD
.SH "SEE ALSO
.IR intro (4),
.IR intro (9p),
.IR 9pfuse (4)
.SH SOURCE
.B \*9/src/cmd/9pserve.c
