FBB::Exec − Runs external programs

#include <bobcat/exec>
Linking option: −lbobcat

The FBB::Exec class offers a basic interface for calling
external programs (so−called child processes). The standard
streams of the child processes are not handled by ttExec)
objects: the parent’s standard streams are used by the child
process. The PATH environment variable is not used when
calling child processes: child process programs must be
specified using paths.

     Exec objects may repeatedly be used to execute the same
or different child processes. Before starting the next child
process, the current child process must have finished.

     Arguments passed to child processes may be surrounded
by double or single quotes. Arguments surrounded by double
quotes have their double quotes removed, while interpreting
any escape−sequences that may have been used within.
Arguments surrounded by single quotes have their single
quotes removed, while accepting their contents as−is. In
addition unquoted escape−sequences may be specified: those
escape sequences are evaluated and replaced by their
intended characters (e.g., \100 is converted to @).

All constructors, members, operators and manipulators,
mentioned in this man−page, are defined in the namespace


     Only the default constructor is supported.

o    bool execute(std::string const &cmd):
     The argument specifies the command to execute: the
     command itself must be specified as a path (the PATH
     environment variable isn’t used). The member returns
     true if the child process’s exit value equals 0.


     Otherwise false is returned. Once execute has returned
     it can be called again, either using the same or
     another command. The class Exec does not offer
     facilities to forcefully terminate child processes:
     parent processes are suspended until the child
     processes have completed. Arguments passed to the
     program to be executed as child process may optionall
     be specified using single or double quotes, as
     described in this man−page’s DESCRIPTION section.

o    int ret() const:
     Once execute has returned this member provides the
     actual exit code of the child process. Its value equals
     −1 before the first exectue call.

     #include <iostream>
#include <bobcat/execfork>

using namespace std;
using namespace FBB;

int main()
    ExecFork ef;

    if (ef.execute("/bin/cp driver.cc /tmp"))
        cout << "driver.cc now copied to /tmp\n";
        cout << "could not copy driver.cc to /tmp\n";

    cout << "Again:\n";

    if (ef.execute("/bin/cp driver.cc /tmp"))
        cout << "driver.cc now copied to /tmp\n";
        cout << "could not copy driver.cc to /tmp\n";


bobcat/exec − provides the class interface


bobcat(7), cerrextractor(3bobcat), cininserter(3bobcat),
coutextractor(3bobcat), execl(3), fork(3bobcat),
process(3bobcat), stdextractor(3bobcat).

None reported.

o    bobcat_5.02.00−x.dsc: detached signature;

o    bobcat_5.02.00−x.tar.gz: source archive;

o    bobcat_5.02.00−x_i386.changes: change log;

o    libbobcat1_5.02.00−x_*.deb: debian package holding the

o    libbobcat1−dev_5.02.00−x_*.deb: debian package holding
     the libraries, headers and manual pages;

o    http://sourceforge.net/projects/bobcat: public archive

Bobcat is an acronym of ‘Brokken’s Own Base Classes And

This is free software, distributed under the terms of the
GNU General Public License (GPL).

Frank B. Brokken (f.b.brokken@rug.nl).