Process pipe with I/O buffering. More...
#include <shell.h>
Public Member Functions | |
void | cancel (void) |
Terminate child process. | |
void | close (void) |
Close the i/o buffer. | |
iobuf (const char *path, char **argv, pmode_t mode, size_t size=512, char **env=NULL) | |
Construct an i/o buffer for a child process. | |
iobuf (size_t size=0) | |
Construct an i/o buffer. | |
void | open (const char *path, char **argv, pmode_t mode, size_t size=512, char **env=NULL) |
Open the i/o buffer attached to a child process. | |
~iobuf () | |
Destroy i/o buffer. | |
Protected Member Functions | |
virtual size_t | _pull (char *address, size_t size) |
virtual size_t | _push (const char *address, size_t size) |
Friends | |
class | shell |
Process pipe with I/O buffering.
This allows the creation and management of a shell pipe with buffered I/O support. This also offers a common class to manage stdio sessions generically in the child process.
Definition at line 176 of file shell.h.
ucc::shell::iobuf::iobuf | ( | size_t | size = 0 |
) |
Construct an i/o buffer.
If a non-zero size is specified, then the object is attached to the process's stdin & stdout. Otherwise an un-opened object is created.
ucc::shell::iobuf::iobuf | ( | const char * | path, | |
char ** | argv, | |||
pmode_t | mode, | |||
size_t | size = 512 , |
|||
char ** | env = NULL | |||
) |
Construct an i/o buffer for a child process.
This is used to create a child process directly when the object is made. It essentially is the same as the open() method.
path | of program to execute, if filename uses $PATH. | |
argv | to pass to child process. | |
mode | of pipe, rdonly, wronly, or rdwr. | |
size | of buffering, and atomic pipe size if setable. | |
env | that may be passed to child process. |
ucc::shell::iobuf::~iobuf | ( | ) |
Destroy i/o buffer.
This may cancel and block waiting for a child process to terminate.
void ucc::shell::iobuf::cancel | ( | void | ) |
Terminate child process.
This also waits for the child process to exit and then closes buffers.
Reimplemented from ucc::shell::pipeio.
void ucc::shell::iobuf::close | ( | void | ) |
Close the i/o buffer.
If attached to a child process it will wait for the child to exit.
void ucc::shell::iobuf::open | ( | const char * | path, | |
char ** | argv, | |||
pmode_t | mode, | |||
size_t | size = 512 , |
|||
char ** | env = NULL | |||
) |
Open the i/o buffer attached to a child process.
path | of program to execute, if filename uses $PATH. | |
argv | to pass to child process. | |
mode | of pipe, rdonly, wronly, or rdwr. | |
size | of buffering, and atomic pipe size if setable. | |
env | that may be passed to child process. |