#include <ExternalProgram.h>
Public Types | |
enum | Stderr_Disposition { Normal_Stderr, Discard_Stderr, Stderr_To_Stdout, Stderr_To_FileDesc } |
typedef std::map< std::string, std::string > | Environment |
Public Member Functions | |
ExternalProgram (std::string commandline, Stderr_Disposition stderr_disp=Normal_Stderr, bool use_pty=false, int stderr_fd=-1, bool default_locale=false, const Pathname &root="", bool pty_trans=true) | |
ExternalProgram (const char *const *argv, Stderr_Disposition stderr_disp=Normal_Stderr, bool use_pty=false, int stderr_fd=-1, bool default_locale=false, const Pathname &root="", bool pty_trans=true) | |
ExternalProgram (const char *const *argv, const Environment &environment, Stderr_Disposition stderr_disp=Normal_Stderr, bool use_pty=false, int stderr_fd=-1, bool default_locale=false, const Pathname &root="", bool pty_trans=true) | |
ExternalProgram (const char *binpath, const char *const *argv_1, bool use_pty=false, bool pty_trans=true) | |
ExternalProgram (const char *binpath, const char *const *argv_1, const Environment &environment, bool use_pty=false, bool pty_trans=true) | |
~ExternalProgram () | |
int | close () |
bool | kill () |
bool | running () |
pid_t | getpid () |
Static Public Member Functions | |
static void | renumber_fd (int origfd, int newfd) |
Protected Member Functions | |
int | checkStatus (int) |
Private Member Functions | |
void | start_program (const char *const *argv, const Environment &environment, Stderr_Disposition stderr_disp=Normal_Stderr, int stderr_fd=-1, bool default_locale=false, const char *root=NULL) |
bool | disableCRLFTranslation (int fd) |
Private Attributes | |
bool | use_pty |
bool | disable_pty_trans |
pid_t | pid |
int | _exitStatus |
typedef std::map<std::string,std::string> ExternalProgram::Environment |
For passing additional environment variables to set
ExternalProgram::ExternalProgram | ( | std::string | commandline, | |
Stderr_Disposition | stderr_disp = Normal_Stderr , |
|||
bool | use_pty = false , |
|||
int | stderr_fd = -1 , |
|||
bool | default_locale = false , |
|||
const Pathname & | root = "" , |
|||
bool | pty_trans = true | |||
) |
Start the external program by using the shell /bin/sh
with the option
-c
. You can use io direction symbols < and >.
commandline a shell commandline that is appended to /bin/sh -c
. default_locale whether to set LC_ALL=C before starting root directory to chroot into, / or empty to not chroot
References Pathname::asString(), Pathname::empty(), and start_program().
ExternalProgram::ExternalProgram | ( | const char *const * | argv, | |
Stderr_Disposition | stderr_disp = Normal_Stderr , |
|||
bool | use_pty = false , |
|||
int | stderr_fd = -1 , |
|||
bool | default_locale = false , |
|||
const Pathname & | root = "" , |
|||
bool | pty_trans = true | |||
) |
Start an external program by giving the arguments as an arry of char *pointers. If environment is provided, varaiables will be added to the childs environment, overwriting existing ones.
References Pathname::asString(), Pathname::empty(), and start_program().
ExternalProgram::ExternalProgram | ( | const char *const * | argv, | |
const Environment & | environment, | |||
Stderr_Disposition | stderr_disp = Normal_Stderr , |
|||
bool | use_pty = false , |
|||
int | stderr_fd = -1 , |
|||
bool | default_locale = false , |
|||
const Pathname & | root = "" , |
|||
bool | pty_trans = true | |||
) |
References Pathname::asString(), Pathname::empty(), and start_program().
ExternalProgram::ExternalProgram | ( | const char * | binpath, | |
const char *const * | argv_1, | |||
bool | use_pty = false , |
|||
bool | pty_trans = true | |||
) |
References start_program().
ExternalProgram::ExternalProgram | ( | const char * | binpath, | |
const char *const * | argv_1, | |||
const Environment & | environment, | |||
bool | use_pty = false , |
|||
bool | pty_trans = true | |||
) |
References start_program().
ExternalProgram::~ExternalProgram | ( | ) |
int ExternalProgram::checkStatus | ( | int | status | ) | [protected] |
int ExternalProgram::close | ( | ) | [virtual] |
Close the input and output streams.
Reimplemented from ExternalDataSource.
References _exitStatus, checkStatus(), and pid.
Referenced by PathInfo::clean_dir(), Process::closeAll(), PathInfo::copy(), PathInfo::copy_dir(), PathInfo::copy_file2dir(), kill(), main(), PathInfo::recursive_rmdir(), renumber_fd(), and start_program().
bool ExternalProgram::disableCRLFTranslation | ( | int | fd | ) | [private] |
pid_t ExternalProgram::getpid | ( | ) | [inline] |
bool ExternalProgram::kill | ( | ) |
void ExternalProgram::renumber_fd | ( | int | origfd, | |
int | newfd | |||
) | [static] |
origfd will be accessible as newfd and closed (unless they were equal)
References close().
Referenced by Y2ProgramComponent::launchExternalProgram(), shellcommand(), and start_program().
bool ExternalProgram::running | ( | ) |
Return whether program is running
References _exitStatus, checkStatus(), and pid.
Referenced by Process::~Process().
void ExternalProgram::start_program | ( | const char *const * | argv, | |
const Environment & | environment, | |||
Stderr_Disposition | stderr_disp = Normal_Stderr , |
|||
int | stderr_fd = -1 , |
|||
bool | default_locale = false , |
|||
const char * | root = NULL | |||
) | [private] |
References _exitStatus, close(), D__, DBG, disable_pty_trans, disableCRLFTranslation(), Discard_Stderr, ERR, ExternalDataSource::inputfile, ExternalDataSource::outputfile, pid, renumber_fd(), Stderr_To_FileDesc, Stderr_To_Stdout, and use_pty.
Referenced by ExternalProgram().
int ExternalProgram::_exitStatus [private] |
Referenced by close(), running(), and start_program().
bool ExternalProgram::disable_pty_trans [private] |
Set to true if LF to CRLF output tranformation on the pty will be disabled
Referenced by start_program().
pid_t ExternalProgram::pid [private] |
Referenced by checkStatus(), close(), getpid(), kill(), running(), and start_program().
bool ExternalProgram::use_pty [private] |
Set to true, if a pair of ttys is used for communication instead of a pair of pipes.
Referenced by start_program().