FBB::Exec - Runs external programs
Contents
Bobcat
Bobcat is an acronym of `Brokken’s Own Base Classes And Templates’.
Bobcat Project Files
o https://fbb-git.gitlab.io/bobcat/: gitlab project page;
Debian Bobcat project files:
o libbobcat6: debian package containing the shared library, changelog and copyright note;
o libbobcat-dev: debian package containing the static library, headers, manual pages, and developer
info;
Bugs
None reported.
Constructor
Only the default constructor is supported.
Copyright
This is free software, distributed under the terms of the GNU General Public License (GPL).
Description
The FBB::Exec class offers a basic interface for calling external programs (so-called childprocesses).
The standard streams of the child processes are not handled by Exec 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 content 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 @).
Example
#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";
else
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";
else
cout << "could not copy driver.cc to /tmp\n";
}
Files
bobcat/exec - provides the class interface
Inherits From
FBB::Fork
Members
o boolexecute(std::stringconst&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 intret()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.
Name
FBB::Exec - Runs external programs
Namespace
FBB
All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the
namespace FBB.
See Also
bobcat(7), cerrextractor(3bobcat), cininserter(3bobcat), coutextractor(3bobcat), execl(3), fork(3bobcat), process(3bobcat), stdextractor(3bobcat).
Synopsis
#include<bobcat/exec>
Linking option: -lbobcat