EXECL.3
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:5k
源码类别:

操作系统开发

开发平台:

C/C++

  1. ." Copyright (c) 1983 Regents of the University of California.
  2. ." All rights reserved.  The Berkeley software License Agreement
  3. ." specifies the terms and conditions for redistribution.
  4. ."
  5. ." @(#)execl.3 6.2 (Berkeley) 4/25/86
  6. ."
  7. .TH EXECL 3 "April 25, 1986"
  8. .UC 5
  9. .SH NAME
  10. execl, execv, execle, execlp, execvp, exec, environ - execute a file
  11. .SH SYNOPSIS
  12. .ft B
  13. #include <unistd.h>
  14. .in +.5i
  15. .ti -.5i
  16. int execl(const char *fInamefP, const char *fIarg0fP, ..., (char *) NULL)
  17. .ti -.5i
  18. int execv(const char *fInamefP, char *const fIargvfP[])
  19. .ti -.5i
  20. int execle(const char *fInamefP, const char *fIarg0fP, ..., (char *) NULL, char *const fIenvpfP[])
  21. .ti -.5i
  22. int execlp(const char *fInamefP, const char *fIarg0fP, ..., (char *) NULL)
  23. .ti -.5i
  24. int execvp(const char *fInamefP, char *const fIargvfP[])
  25. .in -.5i
  26. extern char *const *environ;
  27. .fi
  28. .SH DESCRIPTION
  29. These routines provide various interfaces to the
  30. .B execve 
  31. system call.  Refer to 
  32. .BR  execve (2)
  33. for a description of their properties; only
  34. brief descriptions are provided here.
  35. .PP
  36. .B Exec
  37. in all its forms
  38. overlays the calling process with the named file, then
  39. transfers to the
  40. entry point of the core image of the file.
  41. There can be no return from a successful exec; the calling
  42. core image is lost.
  43. .PP
  44. The
  45. .I name
  46. argument
  47. is a pointer to the name of the file
  48. to be executed.
  49. The pointers
  50. .IR arg [ 0 ],
  51. .IR arg [ 1 "] ..."
  52. address null-terminated strings.
  53. Conventionally
  54. .IR arg [ 0 ]
  55. is the name of the
  56. file.
  57. .PP
  58. Two interfaces are available.
  59. .B execl
  60. is useful when a known file with known arguments is
  61. being called;
  62. the arguments to
  63. .B execl
  64. are the character strings
  65. constituting the file and the arguments;
  66. the first argument is conventionally
  67. the same as the file name (or its last component).
  68. A null pointer argument must end the argument list.
  69. (Note that the
  70. .B execl*
  71. functions are variable argument functions.  This means that the type
  72. of the arguments beyond
  73. .I arg0
  74. is not checked.  So the null pointer requires an explicit cast to type
  75. .B "(char *)"
  76. if not of that type already.)
  77. .PP
  78. The
  79. .B execv
  80. version is useful when the number of arguments is unknown
  81. in advance;
  82. the arguments to
  83. .B execv
  84. are the name of the file to be
  85. executed and a vector of strings containing
  86. the arguments.
  87. The last argument string must be followed
  88. by a null pointer.
  89. .PP
  90. When a C program is executed,
  91. it is called as follows:
  92. .PP
  93. .RS
  94. .ft B
  95. .nf
  96. int main(int fIargcfP, char *const fIargvfP[], char *const fIenvpfP[]);
  97. exit(main(fIargcfP, fIargvfP, fIenvpfP));
  98. .fi
  99. .ft R
  100. .RE
  101. .PP
  102. where
  103. .I argc
  104. is the argument count
  105. and
  106. .I argv 
  107. is an array of character pointers
  108. to the arguments themselves.
  109. As indicated,
  110. .I argc
  111. is conventionally at least one
  112. and the first member of the array points to a
  113. string containing the name of the file.
  114. .PP
  115. .I Argv
  116. is directly usable in another
  117. .B execv
  118. because
  119. .IR argv [ argc ]
  120. is 0.
  121. .PP
  122. .I Envp
  123. is a pointer to an array of strings that constitute
  124. the
  125. .I environment
  126. of the process.
  127. Each string consists of a name, an *(lq=*(rq, and a null-terminated value.
  128. The array of pointers is terminated by a null pointer.
  129. The shell
  130. .BR sh (1)
  131. passes an environment entry for each global shell variable
  132. defined when the program is called.
  133. See
  134. .BR environ (7)
  135. for some conventionally
  136. used names.
  137. The C run-time start-off routine places a copy of
  138. .I envp
  139. in the global cell
  140. .BR environ ,
  141. which is used
  142. by
  143. .B execv
  144. and
  145. .B execl
  146. to pass the environment to any subprograms executed by the
  147. current program.
  148. .PP
  149. .B Execlp
  150. and
  151. .B execvp
  152. are called with the same arguments as
  153. .B execl
  154. and
  155. .BR execv ,
  156. but duplicate the shell's actions in searching for an executable
  157. file in a list of directories.
  158. The directory list is obtained from the environment variable
  159. .BR PATH .
  160. Under standard Minix, if a file is found that is executable, but does
  161. not have the proper executable header then it is assumed to be
  162. a shell script.
  163. .B Execlp
  164. and
  165. .B execvp
  166. execute
  167. .B /bin/sh
  168. to interpret the script.
  169. Under Minix-vmd this does not happen, a script must begin with
  170. .B #!
  171. and the full path name of the interpreter if it is to be an
  172. executable script.
  173. .SH "SEE ALSO"
  174. .BR execve (2),
  175. .BR fork (2),
  176. .BR environ (7),
  177. .BR sh (1).
  178. .SH DIAGNOSTICS
  179. If the file cannot be found,
  180. if it is not executable,
  181. if it does not start with a valid magic number (see
  182. .BR a.out (5)),
  183. if maximum memory is exceeded,
  184. or if the arguments require too much space,
  185. a return
  186. constitutes the diagnostic;
  187. the return value is -1 and
  188. .B errno
  189. is set as for
  190. .BR execve .
  191. Even for the super-user,
  192. at least one of the execute-permission bits must be set for
  193. a file to be executed.