PtyProcess Class Reference

Synchronous communication with tty programs. More...

#include <edelib/PtyProcess.h>

List of all members.

Public Types

enum  CheckPidStatus { Error = -1, NotExited = -2, Killed = -3, Crashed = -4 }

Public Member Functions

 PtyProcess ()
virtual ~PtyProcess ()
int exec (const char *command, const char **args)
char * read_line (bool block=true)
void write_line (const char *line, bool addNewline=true)
void unread_line (const char *line, bool addNewline=true)
void set_exit_string (char *exit)
int wait_for_child ()
int wait_slave ()
int enable_local_echo (bool enable=true)
void set_terminal (bool terminal)
void set_erase (bool erase)
void set_environment (const char **env)
int fd () const
int pid () const
void terminate_child ()

Static Public Member Functions

static int wait_ms (int fd, int ms)
static bool check_pid (pid_t pid)
static int check_pid_exited (pid_t pid)


Detailed Description

Synchronous communication with tty programs.

PtyProcess provides synchronous communication with tty based programs. The communications channel used is a pseudo tty (as opposed to a pipe) This means that programs which require a terminal will work.


Member Enumeration Documentation

enum CheckPidStatus

Check process exit status for process pid. On error (no child, no exit), return -1. If child pid has exited, return its exit status, (which may be zero). If child has not exited, return -2.


Constructor & Destructor Documentation

PtyProcess (  ) 

Empty constructor

virtual ~PtyProcess (  )  [virtual]

Clears data


Member Function Documentation

int exec ( const char *  command,
const char **  args 
)

Forks off and execute a command. The command's standard in and output are connected to the pseudo tty. They are accessible with readLine and writeLine.

Parameters:
command The command to execute.
args The arguments to the command.

char* read_line ( bool  block = true  ) 

Reads a line from the program's standard out. Depending on the block parameter, this call blocks until a single, full line is read.

Parameters:
block Block until a full line is read?
Returns:
The output string.

void write_line ( const char *  line,
bool  addNewline = true 
)

Writes a line of text to the program's standard in.

Parameters:
line The text to write.
addNewline Adds a '
' to the line.

void unread_line ( const char *  line,
bool  addNewline = true 
)

Puts back a line of input.

Parameters:
line The line to put back.
addNewline Adds a '
' to the line.

void set_exit_string ( char *  exit  )  [inline]

Sets the exit string. If a line of program output matches this, waitForChild() will terminate the program and return.

int wait_for_child (  ) 

Waits for the child to exit

int wait_slave (  ) 

Waits until the pty has cleared the ECHO flag. This is useful when programs write a password prompt before they disable ECHO. Disabling it might flush any input that was written.

int enable_local_echo ( bool  enable = true  ) 

Enables/disables local echo on the pseudo tty.

void set_terminal ( bool  terminal  )  [inline]

Enables/disables terminal output. Relevant only to some subclasses

void set_erase ( bool  erase  )  [inline]

Overwrites the password as soon as it is used. Relevant only to some subclasses

void set_environment ( const char **  env  ) 

Set additinal environment variables

int fd (  )  const [inline]

Returns the filedescriptor of the process

int pid (  )  const [inline]

Returns the pid of the process

void terminate_child (  ) 

Terminate the child process if still running

static int wait_ms ( int  fd,
int  ms 
) [static]

Wait ms miliseconds (ie. 1/10th of a second is 100ms), using fd as a filedescriptor to wait on. Returns select(2)'s result, which is -1 on error, 0 on timeout, or positive if there is data on one of the selected fd's.

ms must be in the range 0..999 (ie. the maximum wait duration is 999ms, almost one second).

static bool check_pid ( pid_t  pid  )  [static]

Basic check for the existence of pid. Returns true iff pid is an extant process, (one you could kill - see man kill(2) for signal 0).

static int check_pid_exited ( pid_t  pid  )  [static]

Check process exit status for process pid. On error (no child, no exit), return Error (-1). If child pid has exited, return its exit status, (which may be zero). If child has not exited, return NotExited (-2).


The documentation for this class was generated from the following file:
Generated on Wed Dec 16 14:31:55 2009 for edelib by  doxygen 1.5.2