On 04/07/2011 08:14, fred f wrote:
> Hi all,
> 
> How can I execute an external program, but to let my code continue.
> 
> This doesn't work as I want and waits for finishing called app:
> 
>         ExecuteProcess (MyPathToExe, ' &');
> 
That would only work if you do 

ExecuteProcess('/bin/bash -c /my/path/to/exe &'); // (probably...?)

:) the & is shell/command line interpreter command only.

On the more serious note:

I think you need to use fork 
http://www.freepascal.org/docs-html/rtl/oldlinux/fork.html
and then one of the exec* procedures 
http://www.freepascal.org/docs-html/rtl/index-8.html#SECTIONE
(search for exec on this page, there is 6 of them related to linux
  - Execl, Execle,Execlp,Execv,Execve,Execvp - that _do_not_return_ when 
called! that's 
why you need to use Fork())

(Pseudopascalcode)

PID := Fork();
case PID of   // parent process goes on bypassing the below block

  0: begin

       Execl(MyPathToExe); /// forked child will not return, WILL NOT RETURN! 
on success
                           // so in case the exec* fails, the forked child 
needs to exit 
                           // gracefully.
       exit;               // 
     end;

  else
    // here PID is either of the parent - check with GetPPid as Fork() man page 
says
    // 
    // or -1 if there were errors 
end;

(Somebody, correct me if I'm wrong)

HTH,
L.

> Thanks.
> 
> Bye, Fred


_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to