Annotation of researchv10dc/man/man2/exec.2, revision 1.1

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.

unix.superglobalmegacorp.com

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