Annotation of researchv10dc/dist/man/v4/man2/exec.2, revision 1.1.1.1

1.1       root        1: .th EXEC II 8/5/73
                      2: .sh NAME
                      3: exec  \*-  execute a file
                      4: .sh SYNOPSIS
                      5: (exec = 11. 
                      6: .br
                      7: .ft B
                      8: sys exec; name; args
                      9: .br
                     10: .li
                     11: ...
                     12: .br
                     13: name: <...\\0>
                     14: .br
                     15: .li
                     16: ...
                     17: .br
                     18: args: arg1; arg2; ...; 0
                     19: .br
                     20: arg1: <...\\0>
                     21: .br
                     22: arg2: <...\\0>
                     23: .br
                     24:    ...
                     25: .s3
                     26: execl(name, arg1, arg2, ..., argn, 0)
                     27: .br
                     28: char *name, *arg1, *arg2, ..., *argn;
                     29: .s3
                     30: execv(name, argv)
                     31: .br
                     32: char *name;
                     33: .br
                     34: char *argv[ ];
                     35: .ft R
                     36: .sh DESCRIPTION
                     37: .it Exec
                     38: overlays the calling process with the named file, then
                     39: transfers to the
                     40: beginning of the core image of the file.
                     41: There can be no return from the file; the calling
                     42: core image is lost.
                     43: .s3
                     44: Files remain open across
                     45: .it exec
                     46: calls.
                     47: Ignored signals remain ignored across
                     48: .it exec,
                     49: but
                     50: signals that are caught are reset
                     51: to their default values.
                     52: .s3
                     53: Each user has a
                     54: .it real
                     55: user ID and group ID and an
                     56: .it effective
                     57: user ID and group ID
                     58: (The
                     59: real
                     60: ID
                     61: identifies the person using the system;
                     62: the
                     63: effective
                     64: ID
                     65: determines his access privileges.)
                     66: .it Exec
                     67: changes the effective user and group ID to
                     68: the owner of the executed file if the file has the ``set-user-ID''
                     69: or ``set-group-ID''
                     70: modes.
                     71: The
                     72: real
                     73: user ID is not affected.
                     74: .s3
                     75: The form of this call differs somewhat depending
                     76: on whether it is called from assembly language or C;
                     77: see below for the C version.
                     78: .s3
                     79: The first argument to
                     80: .it exec
                     81: is a pointer to the name of the file
                     82: to be executed.
                     83: The second is the address of a null-terminated list of pointers to
                     84: arguments to be passed to the file.
                     85: Conventionally, the first argument is the name of the
                     86: file.
                     87: Each pointer addresses a string terminated by a null byte.
                     88: .s3
                     89: Once the called file starts execution, the arguments are available
                     90: as follows.
                     91: The stack pointer points to a word containing the number of arguments.
                     92: Just above
                     93: this number is a list of pointers to the argument strings.
                     94: The arguments are placed as high as possible in core.
                     95: .s3
                     96:   sp\*>        nargs
                     97: .br
                     98:        arg1
                     99: .br
                    100:        ...
                    101: .br
                    102:        argn
                    103: .s3
                    104:  arg1: <arg1\\0>
                    105: .br
                    106:        ...
                    107: .br
                    108:  argn: <argn\\0>
                    109: .s3
                    110: From C, two intefaces are available.
                    111: .it execl
                    112: is useful when a known file with known arguments is
                    113: being called;
                    114: the arguments to
                    115: .it execl
                    116: are the character strings
                    117: constituting the file and the arguments; as in
                    118: the basic call, the first argument is conventionally
                    119: the same as the file name (or its last component).
                    120: A 0 argument must end the argument list.
                    121: .s3
                    122: The
                    123: .it execv
                    124: version is useful when the number of arguments is unknown
                    125: in advance;
                    126: the arguments to
                    127: .it execv
                    128: are the name of the file to be
                    129: executed and a vector of strings containing
                    130: the arguments.
                    131: The last argument string must be followed
                    132: by a 0 pointer.
                    133: .s3
                    134: When a C program is executed,
                    135: it is called as follows:
                    136: .s3
                    137:        main(argc, argv)
                    138: .br
                    139:        int argc;
                    140: .br
                    141:        char *argv[];
                    142: .s3
                    143: where \fIargc\fR is the argument count
                    144: and \fIargv\fR is an array of character pointers
                    145: to the arguments themselves.
                    146: As indicated, \fIargc\fR is conventionally at least one
                    147: and the first member of the array points to a
                    148: string containing the name of the file.
                    149: .s3
                    150: .it Argv
                    151: is not directly usable in another
                    152: .it execv,
                    153: since
                    154: .it argv[argc]
                    155: is \*-1 and not 0.
                    156: .sh "SEE ALSO"
                    157: fork(II)
                    158: .sh DIAGNOSTICS
                    159: If the file cannot be found,
                    160: if it is not executable,
                    161: if it does not have a valid header (407 or 410 octal as first word),
                    162: if maximum memory is exceeded,
                    163: or if the arguments require more than 512 bytes
                    164: a return from
                    165: .it exec
                    166: constitutes the diagnostic;
                    167: the error bit (c-bit) is set.
                    168: From C the returned value is \*-1.
                    169: .sh BUGS
                    170: Only 512 characters of arguments are allowed.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.