Synchronous communication with tty programs.
More...
#include <edelib/PtyProcess.h>
|
enum | CheckPidStatus { Error =-1
, NotExited =-2
, Killed =-3
, Crashed =-4
} |
|
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.
◆ 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.
◆ PtyProcess()
◆ ~PtyProcess()
◆ check_pid()
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).
◆ check_pid_exited()
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).
◆ enable_local_echo()
int enable_local_echo |
( |
bool |
enable = true | ) |
|
Enables/disables local echo on the pseudo tty.
◆ exec()
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. |
◆ fd()
Returns the filedescriptor of the process
◆ pid()
Returns the pid of the process
◆ read_line()
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.
◆ set_environment()
void set_environment |
( |
const char ** |
env | ) |
|
Set additinal environment variables
◆ set_erase()
void set_erase |
( |
bool |
erase | ) |
|
|
inline |
Overwrites the password as soon as it is used. Relevant only to some subclasses
◆ set_exit_string()
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.
◆ set_terminal()
void set_terminal |
( |
bool |
terminal | ) |
|
|
inline |
Enables/disables terminal output. Relevant only to some subclasses
◆ terminate_child()
Terminate the child process if still running
◆ unread_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. |
◆ wait_for_child()
Waits for the child to exit
◆ wait_ms()
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).
◆ 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.
◆ write_line()
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. |
The documentation for this class was generated from the following file: