EXEC (II) 3/15/72 EXEC (II)
NAME exec -- execute a file
SYNOPSIS sys exec; name; args / exec = 11.
...
name: <...\0>
...
args: arg1; arg2; ...; 0
arg1: <...\0>
...
DESCRIPTION exec overlays the calling process with the named
file, then transfers to the beginning of the core
image of the file. The first argument to exec is
a pointer to the name of the file to be executed.
The second is the address of a list of pointers
to arguments to be passed to the file. Conven-
tionally, the first argument is the name of the
file. Each pointer addresses a string terminated
by a null byte.
There can be no return from the file; the calling
core image is lost.
The program break is set from the executed file;
see the format of a.out.
Once the called file starts execution, the argu-
ments are available as follows. The stack
pointer points to a word containing the number of
arguments. Just above this number is a list of
pointers to the argument strings.
sp-> nargs
arg1
...
argn
arg1: <arg1\0>
...
argn: <argn\0>
The arguments are placed as high as possible in
core: just below 57000(8).
Files remain open across exec calls. However,
the illegal instruction, emt, quit, and interrupt
trap specifications are reset to the standard
values. (See ilgins, cemt, quit, intr.)
Each user has a real user ID and an effective
user ID (The real ID identifies the person using
the system; the effective ID determines his ac-
cess privileges.) exec changes the effective
user ID to the owner of the executed file if the
file has the "set-user-ID" mode. The real user
ID is not affected.
SEE ALSO fork(II)
DIAGNOSTICS If the file cannot be read or if it is not exe-
cutable, a return from exec constitutes the diag-
nostic. The error bit (c-bit) is set.
BUGS Very high core and very low core are used by exec
to construct the argument list for the new core
image. If the original copies of the arguments
reside in these places, problems can result.