redi::basic_pstream< CharT, Traits > Class Template Reference

Class template for Bidirectional PStreams. More...

`#include <pstream.h>`

Inheritance diagram for redi::basic_pstream< CharT, Traits >:

## Public Types

typedef pbase_type::pmode | pmode
| Type used to specify how to connect to the process.
typedef pbase_type::argv_type | argv_type
| Type used to hold the arguments for a command.
typedef int | fd_type
| Type used for file descriptors.

## Public Member Functions

| basic_pstream ()
| Default constructor, creates an uninitialised stream.
| basic_pstream (const std::string &cmd, pmode mode=pstdout|pstdin)
| Constructor that initialises the stream by starting a process.
| basic_pstream (const std::string &file, const argv_type &argv, pmode mode=pstdout|pstdin)
| Constructor that initialises the stream by starting a process.
| basic_pstream (const argv_type &argv, pmode mode=pstdout|pstdin)
| Constructor that initialises the stream by starting a process.
| ~basic_pstream ()
| Destructor.
void | open (const std::string &cmd, pmode mode=pstdout|pstdin)
| Start a process.
void | open (const std::string &file, const argv_type &argv, pmode mode=pstdout|pstdin)
| Start a process.
basic_pstream & | out ()
| Set streambuf to read from process' `stdout`.
basic_pstream & | err ()
| Set streambuf to read from process' `stderr`.
int | close ()
bool | is_open () const
| Report whether the stream's buffer has been initialised.
const std::string & | command () const
| Return the command used to initialise the stream.
streambuf_type * | rdbuf () const
| Return a pointer to the stream buffer.

## Static Public Attributes

static const pmode | pstdin = std::ios_base::out
| Write to stdin.
static const pmode | pstdout = std::ios_base::in
| Read from stdout.
static const pmode | pstderr = std::ios_base::app
| Read from stderr.
static const pmode | newpg = std::ios_base::trunc
| Create a new process group for the child process.

## Protected Types

typedef basic_pstreambuf< CharT, Traits > | streambuf_type
typedef std::basic_ios< CharT, Traits > | ios_type
enum | { bufsz = 32 , pbsz = 2 }

## Protected Member Functions

void | do_open (const std::string &cmd, pmode mode)
| Start a process.
void | do_open (const std::string &file, const argv_type &argv, pmode mode)
| Start a process.

## Protected Attributes

std::string | command_
| The command used to start the process.

## Detailed Description

template<typename CharT, typename Traits = std::char_traits<CharT>>
class redi::basic_pstream< CharT, Traits >

Class template for Bidirectional PStreams.

Writing to a pstream opened with `pmode` `pstdin` writes to the standard input of the command. Reading from a pstream opened with `pmode` `pstdout` and/or `pstderr` reads the command's standard output and/or standard error. Any of the process' `stdin`, `stdout` or `stderr` that is not connected to the pstream (as specified by the `pmode`) will be the same as the process that created the pstream object, unless altered by the command itself.

## Member Enumeration Documentation

## anonymous enum

anonymous enum

protected inherited

Enumerator
bufsz | Size of pstreambuf buffers.
pbsz | Number of putback characters kept.

## Constructor & Destructor Documentation

## basic_pstream() [1/3]

template<typename CharT, typename Traits = std::char_traits<CharT>>

redi::basic_pstream< CharT, Traits >::basic_pstream | ( | const std::string & | cmd,
|  | pmode | mode = pstdout|pstdin )

inline explicit

Constructor that initialises the stream by starting a process.

Initialises the stream buffer by calling do_open() with the supplied arguments.

Parameters

  cmd | a string containing a shell command.
  mode | the I/O mode to use when opening the pipe.

See also
  do_open(const std::string&, pmode)

## basic_pstream() [2/3]

template<typename CharT, typename Traits = std::char_traits<CharT>>

redi::basic_pstream< CharT, Traits >::basic_pstream | ( | const std::string & | file,
|  | const argv_type & | argv,
|  | pmode | mode = pstdout|pstdin )

inline

Constructor that initialises the stream by starting a process.

Initialises the stream buffer by calling do_open() with the supplied arguments.

Parameters

  file | a string containing the pathname of a program to execute.
  argv | a vector of argument strings passed to the new program.
  mode | the I/O mode to use when opening the pipe.

See also
  do_open(const std::string&, const argv_type&, pmode)

## basic_pstream() [3/3]

template<typename CharT, typename Traits = std::char_traits<CharT>>

redi::basic_pstream< CharT, Traits >::basic_pstream | ( | const argv_type & | argv,
|  | pmode | mode = pstdout|pstdin )

inline explicit

Constructor that initialises the stream by starting a process.

Initialises the stream buffer by calling `do_open(argv[0],argv,mode)`

Parameters

  argv | a vector of argument strings passed to the new program.
  mode | the I/O mode to use when opening the pipe.

See also
  do_open(const std::string&, const argv_type&, pmode)

## ~basic_pstream()

template<typename CharT, typename Traits = std::char_traits<CharT>>

redi::basic_pstream< CharT, Traits >::~basic_pstream | ( |  | ) |

inline

Destructor.

Closes the stream and waits for the child to exit.

## Member Function Documentation

## close()

template<typename C, typename T>

int redi::pstream_common< C, T >::close | ( |  | ) |

inline inherited

Close the pipe, returning the program's exit status, as pclose(3) does.

Calls rdbuf->close() and sets `failbit` on error. Returns process's exit status, as pclose(3) does.

References buf_.

## command()

template<typename C, typename T>

const std::string & redi::pstream_common< C, T >::command | ( |  | ) | const

inline inherited

Return the command used to initialise the stream.

Returns
  a string containing the command used to initialise the stream.

References command_.

## do_open() [1/2]

template<typename C, typename T>

void redi::pstream_common< C, T >::do_open | ( | const std::string & | cmd,
|  | pmode | mode )

inline protected inherited

Start a process.

Calls rdbuf()->open( command , mode ) and sets `failbit` on error.

Parameters

  cmd | a string containing a shell command.
  mode | the I/O mode to use when opening the pipe.

See also
  basic_pstreambuf::open(const std::string&, pmode)

References buf_, and command_.

Referenced by redi::basic_ipstream< char >::open(), redi::basic_ipstream< char >::open(), redi::basic_opstream< char >::open(), redi::basic_opstream< char >::open(), redi::basic_pstream< char >::open(), redi::basic_pstream< char >::open(), redi::basic_rpstream< char >::open(), redi::basic_rpstream< char >::open(), pstream_common(), and pstream_common().

## do_open() [2/2]

template<typename C, typename T>

void redi::pstream_common< C, T >::do_open | ( | const std::string & | file,
|  | const argv_type & | argv,
|  | pmode | mode )

inline protected inherited

Start a process.

Calls rdbuf()->open( file, argv, mode ) and sets `failbit` on error.

Parameters

  file | a string containing the pathname of a program to execute.
  argv | a vector of argument strings passed to the new program.
  mode | the I/O mode to use when opening the pipe.

See also
  basic_pstreambuf::open(const std::string&, const argv_type&, pmode)

References buf_, and command_.

## err()

template<typename CharT, typename Traits = std::char_traits<CharT>>

basic_pstream & redi::basic_pstream< CharT, Traits >::err | ( |  | ) |

inline

Set streambuf to read from process' `stderr`.

Returns
  `*this`

## is_open()

template<typename C, typename T>

bool redi::pstream_common< C, T >::is_open | ( |  | ) | const

inline inherited

Report whether the stream's buffer has been initialised.

Returns
  rdbuf()->is_open().

See also
  basic_pstreambuf::is_open()

References buf_.

## open() [1/2]

template<typename CharT, typename Traits = std::char_traits<CharT>>

void redi::basic_pstream< CharT, Traits >::open | ( | const std::string & | cmd,
|  | pmode | mode = pstdout|pstdin )

inline

Start a process.

Calls do_open( cnd , mode ).

Parameters

  cmd | a string containing a shell command.
  mode | the I/O mode to use when opening the pipe.

See also
  do_open(const std::string&, pmode)

## open() [2/2]

template<typename CharT, typename Traits = std::char_traits<CharT>>

void redi::basic_pstream< CharT, Traits >::open | ( | const std::string & | file,
|  | const argv_type & | argv,
|  | pmode | mode = pstdout|pstdin )

inline

Start a process.

Calls do_open( file , argv , mode ).

Parameters

  file | a string containing the pathname of a program to execute.
  argv | a vector of argument strings passed to the new program.
  mode | the I/O mode to use when opening the pipe.

See also
  do_open(const std::string&, const argv_type&, pmode)

## out()

template<typename CharT, typename Traits = std::char_traits<CharT>>

basic_pstream & redi::basic_pstream< CharT, Traits >::out | ( |  | ) |

inline

Set streambuf to read from process' `stdout`.

Returns
  `*this`

## rdbuf()

template<typename C, typename T>

pstream_common< C, T >::streambuf_type * redi::pstream_common< C, T >::rdbuf | ( |  | ) | const

inline inherited

Return a pointer to the stream buffer.

Returns
  a pointer to the private stream buffer member.

References buf_.

The documentation for this class was generated from the following file:

- pstream.h