4.2BSD/usr/man/man0/intro

.af PN i
.pn 7
.de IR
\fI\\$1\^\fR\\$2
..
.de RI
\fR\\$1\fI\\$2\^\fR\\$3
..
.TL
INTRODUCTION TO VOLUME 1
.LP
This volume gives descriptions of the publicly available features of the
.UX \s-2/32V\s0
system, as extended to provide a virtual memory environment
and other enhancements at U. C. Berkeley.
It does not attempt to provide perspective or tutorial information upon the
.UX
operating system, its facilities, or its implementation.
Various documents on those topics are contained in Volume 2.
In particular, for an overview see `The
.UX
Time-Sharing System' by Ritchie and Thompson; for a tutorial see
`\s8UNIX\s10 for Beginners' by Kernighan,
and for an guide to the new features of this virtual version, see
`Getting started with Berkeley Software for \s8UNIX\s10 on the \s8VAX\s10'
in volume 2C.
.LP
Within the area it surveys, this volume attempts to be timely, complete
and concise.  Where the latter two objectives conflict,
the obvious is often left unsaid in favor of brevity.
It is intended that each program be described as it is, not as it should be.
Inevitably, this means that various sections will soon be out of date.
.LP
The volume is divided into eight sections:
.DS
1.      Commands
2.      System calls
3.      Subroutines
4.      Special files
5.      File formats and conventions
6.      Games
7.      Macro packages and language conventions
8.      Maintenance commands and procedures
.DE
Commands are programs intended to be invoked directly by
the user, in contradistinction to subroutines, which are
intended to be called by the user's programs.
Commands generally reside in directory
.I /bin
(for
.IR bin \|ary
programs).
Some programs also reside in
.I
/\|usr/\|bin,
.R
or in
.I
/\|usr/\|ucb,
.R
to save space in
.I  /bin.
These directories are searched automatically by the command interpreters.
.LP
System calls are entries into the
.UX
supervisor.  The system call interface is identical to a C language
procedure call; the equivalent C procedures are described in Section 2.
.LP
An assortment of subroutines is available; they are described in section 3.
The primary libraries in which they are kept are described in
.IR intro (3).
The functions are described in terms of C, but most will
work with Fortran as well.
.LP
The special files section 4 discusses the characteristics of
each system `file' that actually refers to an I/O device.
The names in this section refer to the DEC device names for the hardware,
instead of the names of the special files themselves.
.LP
The file formats and conventions section 5 documents the structure of particular
kinds of files; for example, the form of the output of the loader and
assembler is given.  Excluded are files used by only one command,
for example the assembler's intermediate files.
.LP
Games have been relegated to section 6 to keep them from contaminating
the more staid information of section 1.
.LP
Section 7 is a miscellaneous collection of information necessary to
writing in various specialized languages: character codes, 
macro packages for typesetting, etc.
.LP
The maintenance section 8 discusses commands and procedures not intended
for use by the ordinary user.
The commands and files described here are almost all kept in the directory
.I /etc.
.LP
Each section consists of a number of independent
entries of a page or so each.
The name of the entry is in the upper corners of its pages,
together with the section number, and sometimes a
letter characteristic of a subcategory, e.g. graphics is 1G,
and the math library is 3M.
Entries within each section are alphabetized.
The page numbers of each entry start at 1;
it is infeasible to number consecutively the pages of 
a document like this that is republished in many variant forms.
.LP
All entries are based on a common format,
not all of whose subsections will always appear.
.RS
.LP
The
.I name
subsection lists the exact names of the commands and subroutines
covered under the entry and gives a very short description of their purpose.
.LP
The
.IR synopsis ""
summarizes the use of the program being described.
A few conventions are used, particularly in the Commands subsection:
.LP
.RS
.B Boldface
words are considered literals, and are typed just as they appear.
.LP
Square brackets [ ] around an argument indicate that the argument is optional.
When an argument is given as `name', it always refers to a file name.
.LP
Ellipses `.\|.\|.' are used to show that the previous argument-prototype
may be repeated.
.LP
A final convention is used by the commands themselves.
An argument beginning with a minus sign `\-' is often taken to mean some
sort of option-specifying argument even if it appears in a position where
a file name could appear.  Therefore, it is unwise to have files whose
names begin with `\-'.
.LP
.RE
The
.IR description ""
subsection discusses in detail the subject at hand.
.LP
The
.IR files ""
subsection gives the names of files which are built into the program.
.LP
A
.I
see also
.R
subsection gives pointers to related information.
.LP
A
.I  diagnostics
subsection discusses the diagnostic indications which may be produced.
Messages which are intended to be self-explanatory are not listed.
.LP
The
.IR bugs ""
subsection gives known bugs and sometimes deficiencies.
Occasionally also the suggested fix is described.
.LP
.RE
At the beginning of the volume is a table of contents,
organized by section and alphabetically within each section.
There is also a permuted index derived from the table of contents.
Within each index entry, the title of the writeup to which
it refers is followed by the appropriate section number in parentheses.
This fact is important because there is considerable
name duplication among the sections, arising principally from commands which
exist only to exercise a particular system call.
.SH
HOW TO GET STARTED
.LP
This section sketches the basic information you need to get started on
.UX
how to log in and log out, how to communicate through your terminal,
and how to run a program.
See `\c
.UX
for Beginners' in Volume 2 for a more complete introduction to the system.
.LP
.I
Logging in.\ \ 
.R
You must call
.UX
from an appropriate terminal.
Almost any ASCII terminal capable of
full duplex operation and generating
the entire character set can be used.
You must also have a valid user name,
which may be obtained, together with necessary telephone numbers,
from the system administration.
After a data connection is established,
the login procedure depends on what kind of terminal you are using
and local system conventions.  The following examples are typical.
.LP
.I
300-baud terminals:\ \ 
.R
Such terminals include the GE Terminet 300, and most display terminals
run with popular modems.  These terminals generally have a speed
switch which should be set at `300' (or `30' for 30 characters per second)
and a half/full duplex switch which should be set at full-duplex.
(This switch will often have to be changed
since many other systems require half-duplex).
When a connection is established, the system types `login:'; you type your
user name, followed by the `return' key.
If you have a password, the system asks for it
and turns off the printer on the terminal so the password will not appear.
After you have logged in, the `return', `new line', or `linefeed' keys
will give exactly the same results.
.LP
.I
1200- and 150-baud terminals:\ \ 
.R
If there is a half/full duplex switch, set it at full-duplex.
When you have established a data connection,
the system types out a few garbage characters
(the `login:' message at the wrong speed).
Depress the `break' (or `interrupt') key; this is a speed-independent signal
to
.UX
that a different speed terminal is in use.
The system then will type `login:,' this time at another speed.
Continue depressing the break key until `login:' appears in clear, then
respond with your user name.
From the TTY 37 terminal, and any other which has the `newline'
function (combined carriage return and linefeed), terminate each line you
type with the `new line' key, otherwise use the `return' key.
.LP
.I
Hard-wired terminals.\ \ 
.R
Hard-wired terminals usually begin at the right
speed, up to 9600 baud; otherwise the preceding instructions apply.
.LP
For all these terminals, it is important
that you type your name in lower-case if possible; if you type
upper-case letters,
.UX
will assume that your terminal cannot generate lower-case
letters and will translate all subsequent upper-case letters to lower case.
.LP
The evidence that you have successfully logged in is that a shell program
will type a prompt (`$' or `%') to you.
(The shells are described below under `How to run a program.')
.LP
For more information, consult
.IR tset (1),
and
.IR stty (1),
which tell how to adjust terminal behavior,
.IR getty (8),
which discusses the login sequence in more detail, and
.IR tty (4),
which discusses terminal I/O.
.LP
.I
Logging out.\ \ 
.R
There are three ways to log out:
.IP
By typing an end-of-file indication (EOT character, control-d) to the Shell.
The Shell will terminate and the `login: ' message will appear again.
.IP
You can log in directly as another user by giving a
.IR login (1)
command.
.IP
If worse comes to worse,
you can simply hang up the phone; but beware \- some machines may
lack the necessary hardware to detect that the phone has been hung up.
Ask your system administrator if this is a problem on your machine.
.LP
.I
How to communicate through your terminal.\ \ 
.R
When you type characters, a gnome deep in the system
gathers your characters and saves them in a secret place.
The characters will not be given to a program
until you type a return (or newline), as described above in
.I
Logging in.
.R
.LP
.UX
terminal I/O is full-duplex.
It has full read-ahead, which means that you can type at any time,
even while a program is typing at you.
Of course, if you type during output, the printed output will
have the input characters interspersed.
However, whatever you type will be saved up and interpreted in correct sequence.
There is a limit to the amount of read-ahead,
but it is generous and not likely to be exceeded unless
the system is in trouble.
When the read-ahead limit is exceeded, the system
throws away all the saved characters (or beeps, if your prompt was a %).
.LP
The character `@' in typed input kills all the preceding characters in the
line, so typing mistakes can be repaired on a single line.
Also, the character `#' erases the last character typed.
(Most users prefer to use a backspace rather than `#',
and many prefer control-U instead of `@';
.IR tset (1)
or
.IR stty (1)
can be used to arrange this.)
Successive uses of `#' erase characters back to, but
not beyond, the beginning of the line.
`@' and `#' can be transmitted to a program by preceding them with `\\'.
(So, to erase `\\', you need two `#'s).
.LP
The `break' or `interrupt' key causes an
.I
interrupt signal,
.R
as does the \s8ASCII\s10 `delete' (or `rubout') character,
which is not passed to programs.
This signal generally causes whatever program you are running to terminate.
It is typically used to stop a long printout that you don't want.
However, programs can arrange either to ignore this signal altogether,
or to be notified when it happens (instead of being terminated).
The editor, for example, catches interrupts and stops what it is doing,
instead of terminating, so that an interrupt can
be used to halt an editor printout without losing the file being edited.
Many users change this interrupt character to be ^C (control-C) using
\fIstty\fR(1).
.LP
It is also possible to suspend output temporarily using ^S (control-s)
and later resume output with ^Q.
In a newer terminal driver, it is possible to cause output to be thrown
away without interrupting the program by typing ^O; see
.IR tty (4).
.LP
The
.IR quit ""
signal is generated by typing the \s8ASCII\s10 FS character.
(FS appears many places on different terminals, most commonly
as control-\e or control-\^|\^.)
It not only causes a running program to terminate
but also generates a file with the core image of the terminated process.
Quit is useful for debugging.
.LP
Besides adapting to the speed of the terminal,
.UX
tries to be intelligent about whether
you have a terminal with the newline function
or whether it must be simulated with carriage-return and line-feed.
In the latter case, all input carriage returns
are turned to newline characters (the standard line delimiter)
and both a carriage return and a line feed are echoed to the terminal.
If you get into the wrong mode, the
.IR reset (1)
command will rescue you.
.LP
Tab characters are used freely in
.UX
source programs.
If your terminal does not have the tab function,
you can arrange to have them turned into spaces
during output, and echoed as spaces during input.
The system assumes that tabs are set every eight columns.
Again, the
.IR tset (1)
or
.IR stty (1)
command will set or reset this mode.
.IR Tset (1)
can be used to set the tab stops automatically when necessary.
.LP
.I
How to run a program; the shells.\ \ 
.R
When you have successfully logged in, a program
called a shell is listening to your terminal.
The shell reads typed-in lines, splits them up
into a command name and arguments, and executes the command.
A command is simply an executable program.
The Shell looks in several system directories to find the command.  You can also
place commands in your own directory and have the shell find them there.
There is nothing special about system-provided
commands except that they are kept in a directory where the shell can find them.
.LP
The command name is always the first word on an input line;
it and its arguments are separated from one another by spaces.
.LP
When a program terminates, the shell will ordinarily regain control and type 
a prompt at you to indicate that it is ready for another command.
.LP
The shells have many other capabilities, which are described in detail in
sections
.IR sh (1)
and
.IR csh (1).
If the shell prompts you with `$', then it is an instance of
.IR sh (1)
the standard Bell-labs provided shell.
If it prompts with `%' then it is an instance of
.IR csh (1),
a shell written at Berkeley.
The shells are different for all but the most simple terminal usage.
Most users at Berkeley choose
.IR csh (1)
because of the
.I history
mechanism and the
.I alias
feature, which greatly enhance its power when used interactively.
.I Csh
also supports the job-control facilities;
see
.IR csh (1)
or the Csh introduction in volume 2C for details.
.LP
You can change from one shell to the other by using the
.I chsh (1)
command, which takes effect at your next login.
.LP
.I
The current directory.\ \ 
.R
.UX
has a file system arranged in a hierarchy of directories.
When the system administrator gave you a user name,
he also created a directory for you (ordinarily
with the same name as your user name).
When you log in, any file name you type is by default in this directory.
Since you are the owner of this directory, you have
full permission to read, write, alter, or destroy its contents.
Permissions to have your will with other directories
and files will have been granted or denied to you by their owners.
As a matter of observed fact, few
.UX
users protect their files from perusal by other users.
.LP
To change the current directory (but not the set of permissions you
were endowed with at login) use
.IR cd (1).
.LP
.I
Path names.\ \ 
.R
To refer to files not in the current directory, you must use a path name.
Full path names begin with `/', the name of the root directory of the
whole file system.
After the slash comes the name of each directory containing the next
sub-directory (followed by a `/') until finally the file name is reached.
For example,
.I
/\^usr/\^lem/\^filex
.R
refers to the file
.I
filex
.R
in the directory
.I
lem; lem
.R
is itself a subdirectory of
.I
usr; usr
.R
springs directly from the root directory.
.LP
If your current directory has subdirectories,
the path names of files therein begin with
the name of the subdirectory with no prefixed `/'.
.LP
A path name may be used anywhere a file name is required.
.LP
Important commands which modify the contents of files are
.IR cp (1),
.IR mv (1),
and
.IR rm (1),
which respectively copy, move (i.e. rename) and remove files.
To find out the status of files or directories, use 
.IR ls (1).
See
.IR mkdir (1)
for making directories and
.I
rmdir
.R
(in
.IR rm (1))
for destroying them.
.LP
For a fuller discussion of the file system, see
`The
.UX
Time-Sharing System,'
by Ken Thompson and Dennis Ritchie.
It may also be useful to glance through section 2 of this manual, which
discusses system calls, even if you don't intend
to deal with the system at that level.
.LP
.I
Writing a program.\ \ 
.R
To enter the text of a source program into a
.UX
file, use the editor
.IR ex (1)
or its display editing alias
.IR vi (1).
(The old standard editor
.IR ed (1)
is also available.)
The principal languages in
.UX
are provided by the C compiler
.IR cc (1),
the Fortran compiler
.IR f77 (1),
the Pascal compiler
.IR pc (1),
and interpreter
.IR pi (1)
and
.IR px (1),
and the Lisp system
.IR lisp (1).
User contributed software in the latest
release of the system supports
APL, the Functional Programming language, and Icon.
Refer to
.IR apl (1),
.IR fp (1),
and
.IR icon (1),
respectively for more information about each.
After the program text has been entered through the editor
and written on a file, you can give the file
to the appropriate language processor as an argument.
The output of the language processor
will be left on a file in the current directory named `a.out'.
(If the output is precious, use
.I mv
to move it to a less exposed name soon.)\ 
.LP
When you have finally gone through this entire process
without provoking any diagnostics, the resulting program
can be run by giving its name to the shell
in response to the shell (`$' or `%') prompt.
.LP
Your programs can receive arguments from the command line
just as system programs do,
see
.IR execve (2).
.LP
.I
Text processing.\ \ 
.R
Almost all text is entered through the editor
.IR ex (1)
(often entered via
.IR vi (1)).
The commands most often used to write text on a terminal are:
.I
cat, pr, more
.R
and
.I nroff,
all in section 1.
.LP
The
.I cat
command simply dumps \s8ASCII\s10 text
on the terminal, with no processing at all.
The
.IR pr ""
command paginates the text, supplies headings,
and has a facility for multi-column output.
.I
Nroff
.R
is an elaborate text formatting program.
Used naked, it requires careful forethought, but for
ordinary documents it has been tamed; see
.IR me (7)
and
.IR ms (7).
.I
.LP
.I Troff
prepares documents for a Graphics Systems phototypesetter or a Versatec Plotter;
it is very similar to 
.I nroff,
and often works from exactly the same source text.
It was used to produce this manual.
.LP
.IR Script (1)
lets you keep a record of your session in a file,
which can then be printed, mailed, etc.
It provides the advantages of a hard-copy terminal
even when using a display terminal.
.LP
.IR More (1)
is useful for preventing the output of a command from
zipping off the top of your screen.
It is also well suited to perusing files.
.LP
.I
Status inquiries.\ \ 
.R
Various commands exist to provide you with useful information.
.IR w (1)
prints a list of users presently logged in, and what they are doing.
.IR date (1)
prints the current time and date.
.IR ls (1)
will list the files in your directory or give
summary information about particular files.
.LP
.I
Surprises.\ \ 
.R
Certain commands provide inter-user communication.
Even if you do not plan to use them, it would be
well to learn something about them, because someone else may aim them at you.
.LP
To communicate with another user currently logged in,
.IR write (1)
is used;
.IR mail (1)
will leave a message whose presence will be announced
to another user when he next logs in.
The write-ups in the manual also suggest how to respond to
the two commands if you are a target.
.LP
If you use
.IR csh (1)
the key ^Z (control-Z) will cause jobs to ``stop''.
If this happens before you learn about it,
you can simply continue by saying ``fg'' (for foreground) to bring
the job back.
.PP
When you log in, a message-of-the-day may greet you before the first prompt.
.SH
CONVERTING FROM THE 6TH EDITION
.LP
There follows a catalogue of significant, mostly incompatible,
changes that will affect old users converting from the sixth edition
on a PDP-11.
No attempt is made to list all new facilities, or even all
minor, but easily spotted changes, just the bare essentials without which
it will be almost impossible to do anything.
.LP
.I
Addressing files.\ \ 
.R
Byte addresses in files are now long (32-bit) integers.
Accordingly
.I seek
has been replaced by
.IR lseek (2).
Every program that contains a 
.I seek
must be modified.
.I Stat
and
.IR fstat (2)
have been affected similarly, since file lengths are now
32- rather than 24-bit quantities.
.LP
.I
Assembly language.\ \ 
.R
This language is dead.  Necromancy will be severely punnished.
.LP
.I Stty
and
.I gtty.\ \ 
.R
These system calls have been extensively altered, see
.IR ioctl (2)
and
.IR tty (4).
.LP
.I 
C language, lint.\ \ 
.R
The syntax for initialization requires an equal sign = before an initializer,
and brackets { } around compound initial values;
arrays and structures are now initialized honestly.
Assignment operators such as =+ and =\-
are now written in the reverse order: +=, \-=.  This removes the possibility
of ambiguity in constructs such as x=\-2, y=*p, and a=/*b.
You will also certainly want to learn about
.DS
long integers
type definitions
casts (for type conversion)
unions (for more honest storage sharing)
#include <filename> (which searches in standard places)
.DE
.LP
The program
.IR lint (1)
checks for obsolete syntax and does strong type checking of C programs, singly
or in groups that are expected to be loaded together.
It is indispensable for conversion work.
.LP
.I Fortran.\ \ 
The old 
.I fc
is replaced by
.I f77,
a true compiler for Fortran 77, compatible with C.
There are substantial changes in the language;
see `A Portable Fortran 77 Compiler' in Volume 2.
.LP
.I
Stream editor.\ \ 
.R
The program
.IR sed (1)
is adapted to massive, repetitive
editing jobs of the sort encountered in converting to the new system.
It is well worth learning.
.LP
.I
Standard I/O.\ \ 
.R
The old 
.I
fopen, getc, putc
.R
complex and the old
.I \-lp
package are both dead, and even
.I getchar
has changed.
All have been replaced by the clean, highly efficient,
.I stdio
package,
.IR intro (3S).
The first things to know are that
.IR getchar (3)
returns the integer EOF (\-1) (which is not a possible byte value)
on end of file, that 518-byte buffers are out, and that there
is a defined FILE data type.
.LP
.I Make.\ \ 
The program
.IR make (1)
handles the recompilation and loading of software in an orderly way from
a `makefile' recipe given for each piece of software.
It remakes only as much as the modification dates of the input files
show is necessary.
The makefiles will guide you in building your new system.
.LP
.I
Shell, chdir.\ \ 
.R
F. L. Bauer once said Algol 68 is the Everest that
must be climbed by every computer scientist because it is there.
So it is with the shell for
.UX
users.
Everything beyond simple command invocation from a terminal is different.
Even
.I chdir
is now spelled
.IR cd .
If you wish to use
.I sh
(as opposed to
.IR csh )
then you will want to study
.IR sh (1)
long and hard.
.LP
.I
C shell.\ \ 
.R
.IR Csh (1),
developed at Berkeley, has features comparible to
.IR sh .
It includes a history mechanism that saves you from retyping all or part
of previous commands, as well as an efficient aliasing (macro) mechanism.
The job control facilities of the system, which make the system much
more pleasant to use, are currently available only with
.IR csh .
See
.IR csh (1)
for a description.
These features make
.I csh
pleasant to use interactively.
.I Csh
programs have a syntax reminiscent of
.IR C ,
while
.I sh
command programs have a syntax reminiscent of \s-2ALGOL\s0-68.
.LP
.I
Debugging.\ \ 
.R
.I Sdb
is a far more capable replacement for the debugger
.IR cdb ,
and debugs C and Fortran at the source level.
For machine language debugging,
.I adb
replaces
.IR db .
The first-time user should be especially careful about
distinguishing / and ? in
.I adb
commands, and watching to make sure that the
.I x
whose value he asked for is the real
.IR x ,
and not just some absolute location equal to the stack offset of some automatic
.IR x .
You can always use the `true' name,
.IR _x ,
to pin down a C external variable.
.LP
.IR Dsw .
This little-known, but indispensable facility has been taken over by
.I
rm \-ri.
.R
.LP
.I
Boot procedures.\ \ 
.R
Needless to say, these are all different.
See section 8 of this volume, and the other documentation
you should have received with your tape.
.SH
CONVERTING FROM THE DECEMBER, 1979 BERKELEY DISTRIBUTION
.PP
There have been a number of significant changes and improvements
in the system.  This list just gives the bare essentials:
.LP
.I
C language changes.\ \ 
.R
The C compiler now accepts and checks essentially arbitrary length
identifiers and preprocessor names.  There is a new type available
in type casts: \fBvoid\fR which signifies that a value is to be ignored.
It is useful in keeping lint happy about values which are not used
(especially values returned from procedures).  Finally, the language
has been changed so that field names need not be unique to structures;
on the other hand, the compiler insists that you be more honest
about types involved in pointer constructs or it will warn you.
.LP
.I
Object file format.\ \ 
.R
The object file format has been changed to include a string table,
so that language compilers may have names longer than 8 characters
in their resulting \fIa.out\fR files.  Old \fI.o\fR files must be
recreated.  \fIA.out\fR files will still run on both this and the
December 1979 version of the system; only the symbol tables are incompatible.
.LP
.I
Archive format and table of contents.\ \ 
.R
The archive format has been changed to one which is portable between
the VAX and other machines (e.g. the PDP-11).  Old \s-2VAX\s0
archives should be converted with
.IR arcv (8);
loader archives should just be recreated since the object files
are also obsolete.
Loader archives should have table-of-contents added by
.IR ranlib (1);
if they dont the loader will gripe when they are used.
.LP
.I
New tty driver, job control facilities and csh.\ \ 
.R
Hand in hand are new job control facilities, a new tty driver and a new
version of the C shell which supports and uses all of this.
See
.IR tty (4)
and
.IR csh (1)
for a quick introduction.
.LP
.I
Pascal compiler.\ \ 
.R
There is a true Pascal compiler,
.IR pc (1)
which allows separate compilation as well as mixing in of FORTRAN and
C code.
.LP
.I
Error analyzer.\ \ 
.R
There is an error analyzer program
.IR error (1),
which takes a set of error message
and merges them back into the source files at the point of error.
It can be used interactively to avoid inserting errors which are uninteresting.
This program eliminates once and for all making lists of errors on small
scraps of paper.
.LP
.I
Mail forwarding.\ \ 
.R
The system now provides mail forwarding and distribution facilities.
Group and aliases are defined in the file
.I /usr/lib/aliases
see
.IR aliases (5).
If you change this file you will have to rerun
.IR newaliases (1).
For any particular system a table in the source of the
.I delivermail
postman program may have to be changed so that it knows about
the gateways on the local machine.
.LP
.I
System bootstrap procedures.\ \ 
.R
These are totally changed; the system performs automatic reboots and
preens the disks automatically at reboot.  You should reread the appropriate
pages in section 8 if you deal with system reboots.
.SH
CONVERTING FROM THE JUNE, 1981 BERKELEY DISTRIBUTION
.PP
Many many changes have been made.  This list indicates those
which are most visible to users.
.LP
.I
Directory format.\ \ 
.R
Directory entries are no longer fixed length.  This forces
user programs which read directories to be modified to use
the 
.IR directory (3)
package.
.LP
.I
Signals.\ \ 
.R
A new signal package has replaced the previous signal mechanism
as well as the ``jobs library''.  When using the compatible 
\fIsignal\fP\|(3C) interface routine, the two most important
changes are: signal handlers are not reset to SIG_DFL when a
process receives a signal, and while a signal handler is processing
a signal, that signal is blocked until the handler returns.
This has implications, in particular, for programs which process
the suspend character typed at the terminal.  Refer to 
\fIsigvec\fP, \fIsigblock\fP, \fIsigpause\fP, \fIsigstack\fP,
and \fIsigsetmask\fP\|(2) for
information about the new signal facilities.
.LP
.I
File and path names.\ \ 
.R
File names may now be up to 255 characters in length.  Path
names are restricted to be at most 1024 characters.  These two
constants are provides as MAXNAMLEN and MAXPATHLEN in
.RI < sys/dir.h >
and
.RI < sys/param.h >,
respectively.
.LP
.I
System time.\ \ 
.R
System time is provided in microsecond precision with
10 millisecond accuracy.  The new system call
.IR gettimeofday (2)
supplants the old
.IR time (3)
call which is now a library routine.  The major impact of this
change is that programs are now written in a fashion which
is independent of the line clock frequency.
.LP
.I
Groups.\ \ 
.R
A user may now be in many groups simultaneously.  This has
obviated the need for the
.I newgrp
command.  See
.IR getgroups (2)
for more information.
.LP
.I
Stat and fstat return value.\ \ 
.R
The structure returned by the
.I stat
and
.I fstat
system calls is now larger.  This is due to inode numbers
growing to 32-bits, time stamps expanding to 64-bits and
other information being included in the return value.  Consult
.IR stat (2)
for more information.
.LP
.I
Mail forwarding.\ \ 
.R
The system now provides general internetwork mail forwarding
and distribution facilities.  The
.IR sendmail (8)
program replaces the old
.I delivermail
facility.
.LP
.I 
Debuggers.\ \ 
.R
The previous C source language debugger,
.IR sdb ,
has been replaced by a new one,
.IR dbx (1).
.IR Adb (1)
has been extended to simplify
debugging of the operating system.
.LP
.I
Networking support.\ \ 
.R
Many new user programs provide access to the networking
facilities.  The
.IR rlogin (1C)
and
.IR rsh (1C)
programs are intended for communicating between UNIX
systems.  The 
.IR telnet (1C)	
and
.IR ftp (1C)
programs support the DARPA Internet standard protocols.
The
.IR netstat (1)
program is useful in watching network activity.