Skip to content

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.