|
|
1.1 ! root 1: .TH EXEC 2 ! 2: .CT 2 proc_man ! 3: .SH NAME ! 4: execl, execv, execle, execve, execlp, execvp, exect \(mi execute a file ! 5: .SH SYNOPSIS ! 6: .nf ! 7: .B int "execl(name, arg0, arg1, ..., argn, (char *)0)" ! 8: .B char *name, *arg0, *arg1, ..., *argn; ! 9: .PP ! 10: .B int execv(name, argv) ! 11: .B char *name, *argv[]; ! 12: .PP ! 13: .B "int execle(name, arg0, arg1, ..., argn, (char *)0, envp)" ! 14: .B "char *name, *arg0, *arg1, ..., *argn, *envp[];" ! 15: .PP ! 16: .B int execve(name, argv, envp) ! 17: .B char *name, *argv[], *envp[]; ! 18: .PP ! 19: .B int "execlp(name, arg0, arg1, ..., argn, (char *)0)" ! 20: .B char *name, *arg0, *arg1, ..., *argn; ! 21: .PP ! 22: .B int execvp(name, argv) ! 23: .B char *name, *argv[]; ! 24: .PP ! 25: .B int exect(name, argv, envp) ! 26: .B char *name, *argv[], *envp[]; ! 27: .fi ! 28: .SH DESCRIPTION ! 29: .I Exec ! 30: in all its forms ! 31: overlays the calling process with the named file, then ! 32: transfers to the ! 33: entry point of the image of the file. ! 34: There can be no return from a successful ! 35: .IR exec ; ! 36: the calling image is lost. ! 37: .PP ! 38: Files remain open across ! 39: .I exec ! 40: unless explicit arrangement has been made; ! 41: see ! 42: .IR ioctl (2). ! 43: Signals that are caught (see ! 44: .IR signal (2)) ! 45: are reset ! 46: to their default values. ! 47: Other signal settings ! 48: are unchanged. ! 49: .PP ! 50: Each user has a ! 51: .I real ! 52: userid and groupid and an ! 53: .I effective ! 54: userid and groupid. ! 55: The real userid (groupid) ! 56: identifies the person using the system; ! 57: the effective userid (groupid) ! 58: determines access privileges. ! 59: .I Exec ! 60: changes the effective userid and groupid to ! 61: the owner of the executed file if the file has the set-userid ! 62: or set-groupid modes. ! 63: The real userid is not affected. ! 64: .PP ! 65: .I Name ! 66: points to the name of the file ! 67: to be executed. ! 68: It must be a regular file ! 69: (type ! 70: .BR S_IFREG , ! 71: see ! 72: .IR stat (2)) ! 73: and its permissions must allow execution. ! 74: .I Arg0, arg1, ... ! 75: or the pointers in ! 76: .I argv ! 77: address null-terminated argument strings ! 78: to be made available when the new image starts. ! 79: .I Argv ! 80: must end with a 0 pointer. ! 81: Conventionally argument 0 ! 82: is the name of the program. ! 83: .PP ! 84: In ! 85: .IR execle , ! 86: .IR execve , ! 87: and ! 88: .IR exect , ! 89: the ! 90: .I envp ! 91: array contains pointers to ! 92: a set of null-terminated strings ! 93: composing the environment of the process. ! 94: .I Envp ! 95: must end with a 0 pointer. ! 96: The other calls ! 97: copy the present environment ! 98: from the global cell ! 99: .IR environ ; ! 100: see ! 101: .IR environ (5). ! 102: .PP ! 103: The ! 104: .I execl ! 105: and ! 106: .I execv ! 107: forms ! 108: differ only in argument syntax; ! 109: one is more convenient when the number of arguments is known in advance, ! 110: the other when arguments are assembled on the fly. ! 111: .PP ! 112: If the first two bytes of the file ! 113: are the characters ! 114: .LR #! , ! 115: subsequent text up to a newline is examined. ! 116: The first word, ! 117: up to a blank or tab, ! 118: names an interpreter program; ! 119: anything left over is a single supplemental argument. ! 120: The original ! 121: .IR name , ! 122: preceded by the supplemental argument if any, ! 123: is inserted in the argument list ! 124: between ! 125: .I arg0 ! 126: and ! 127: .I arg1 ! 128: (or between the first pair of ! 129: .I argv ! 130: pointers). ! 131: The interpreter is executed with the modified argument list. ! 132: .PP ! 133: If the file doesn't start with ! 134: .LR #! , ! 135: a standard header for ! 136: a binary image ! 137: is expected; ! 138: see ! 139: .IR a.out (5). ! 140: If the file doesn't begin with a valid header either, ! 141: .B ENOEXEC ! 142: is returned. ! 143: The shell ! 144: .IR sh (1) ! 145: takes this to mean that the file ! 146: contains shell commands. ! 147: .PP ! 148: When a C program is executed, ! 149: it is called as follows: ! 150: .IP ! 151: .EX ! 152: main(argc, argv, envp) ! 153: int argc; ! 154: char **argv, **envp; ! 155: .EE ! 156: .PP ! 157: .I Argv ! 158: is the array of argument pointers passed to ! 159: .IR exec ; ! 160: .I argc ! 161: is the number of arguments. ! 162: .I Argv ! 163: is directly usable in a subsequent ! 164: .I execv ! 165: because ! 166: .BR argv[argc]==0 . ! 167: .I Envp ! 168: is the environment array; ! 169: the same value has already been stored in ! 170: .IR environ . ! 171: .PP ! 172: .I Execlp ! 173: and ! 174: .I execvp ! 175: take the same arguments as ! 176: .I execl ! 177: and ! 178: .IR execv , ! 179: but search the directories listed in the ! 180: .B PATH ! 181: environment variable ! 182: for an executable file called ! 183: .IR name , ! 184: mimicking the shell's path search. ! 185: .PP ! 186: .I Exect ! 187: is the same as ! 188: .IR execve , ! 189: except that it arranges for the process to stop ! 190: just before the first instruction of the new image; ! 191: see ! 192: .IR proc (4). ! 193: .SH FILES ! 194: .TF /bin/sh ! 195: .TP ! 196: .F /bin/sh ! 197: shell, invoked if command file found ! 198: by ! 199: .I execlp ! 200: or ! 201: .I execvp ! 202: .SH EXAMPLES ! 203: This file, ! 204: if created with execute permissions ! 205: and run by ! 206: .IR exec , ! 207: calls ! 208: .IR awk (1) ! 209: to count the lines in all the files named in its arguments: ! 210: .EX ! 211: #!/usr/bin/awk -f ! 212: END { print NR } ! 213: .EE ! 214: .SH "SEE ALSO" ! 215: .IR sh (1), ! 216: .IR fork (2), ! 217: .IR ioctl (2), ! 218: .IR signal (2), ! 219: .IR proc (4), ! 220: .IR environ (5) ! 221: .SH DIAGNOSTICS ! 222: .BR E2BIG , ! 223: .BR EACCES , ! 224: .BR EFAULT , ! 225: .BR EIO , ! 226: .BR ELOOP , ! 227: .BR ENOENT , ! 228: .BR ENOEXEC , ! 229: .BR ENOMEM , ! 230: .BR ENOTDIR , ! 231: .BR ENXIO , ! 232: .BR ETXTBSY ! 233: .SH BUGS ! 234: If ! 235: .I execvp ! 236: is called to execute a file that turns out to be a shell ! 237: command file, ! 238: and the shell cannot be executed, ! 239: some of the values in ! 240: .I argv ! 241: may be modified before return. ! 242: .br ! 243: Neither the shell's path search ! 244: nor that of ! 245: .I execlp ! 246: and ! 247: .I execvp ! 248: extends to the interpreter named after ! 249: .LR #! . ! 250: The interpreter file ! 251: may not itself begin with ! 252: .LR #! . ! 253: The text after ! 254: .LR #! ! 255: may be no more than 30 characters long, ! 256: including the newline.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.