[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: RPM HOW-TO and execution

Felix Kollmann wrote:

> 2.      Can anybody say how to execute programmes in C++ (perhaps 'int exec
> (string name, string path, string params)' o.s.)?

Well, this is more of a UNIX/Linux question than a C++ question.  The
mechanism is identical for all programming languages that support making
OS calls.

  exec/execl/execlp/execle/execv/execvp - this family of functions abort
    the current program and start the new one in it's place.

  system - this function starts up another program, pausing the current
    program until it's finished, resuming after it's done.

  popen - this function starts the other program in parallel to this
    one, creating a 'pipe' between it and the current program so that
    they can exchange data.

If you want to start a program in a parallel thread (ie without pausing
the current program while it runs and without killing the current
then either use popen - or simply call 'fork' to split your program into
two threads and call one of the 'exec' varients to switch that branch of
the fork over to running the other program.  Your main program can then
use 'wait' when it needs to be sure that the other program has finished
RTFM for details.

  man 3 exec
  man 3 system
  man 3 popen
  man 2 fork
  man 2 wait

Steve Baker                  http://web2.airmail.net/sjbaker1
sjbaker1@airmail.net (home)  http://www.woodsoup.org/~sbaker
sjbaker@hti.com      (work)