FpExecve
Execute process using environment
Declaration
Source position: bunxh.inc line 64
function FpExecve(path: pChar; argv: ppChar; envp: ppChar) : cint;
function FpExecve(const path: RawByteString; argv: ppchar; envp: ppchar)
: cint;
Description
Replaces the currently running program with the program, specified in path. It gives the program the options in argv, and the environment in envp. They are pointers to an array of pointers to null-terminated strings. The last pointer in this array should be nil. On success, execve does not return.
Errors
Extended error information can be retrieved with fpGetErrno , and includes the following:
- sys_eacces
- File is not a regular file, or has no execute permission. A component of the path has no search permission.
- sys_eperm
- The file system is mounted ****.
- sys_e2big
- Argument list too big.
- sys_enoexec
- The magic number in the file is incorrect.
- sys_enoent
- The file does not exist.
- sys_enomem
- Not enough memory for kernel.
- sys_enotdir
- A component of the path is not a directory.
- sys_eloop
- The path contains a circular reference (via symlinks).
See also
Name | Description |
---|---|
fpExecv | Execute process |
fpFork | Create child process |
Example
Program Example7;
{ Program to demonstrate the Execve function. }
Uses BaseUnix, strings;
Const Arg0 : PChar = '/bin/ls';
Arg1 : Pchar = '-l';
Var PP : PPchar;
begin
GetMem (PP,3*SizeOf(Pchar));
PP[0]:=Arg0;
PP[1]:=Arg1;
PP[3]:=Nil;
{ Execute '/bin/ls -l', with current environment }
{ Envp is defined in system.inc }
fpExecVe ('/bin/ls',pp,envp);
end.