<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <title>edelib: PtyProcess Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">edelib  <span id="projectnumber">2.0.0</span> </div> </td> </tr> </tbody> </table> </div> <!-- Generated by Doxygen 1.7.6.1 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="namespaceedelib.html">edelib</a> </li> <li class="navelem"><a class="el" href="classedelib_1_1PtyProcess.html">PtyProcess</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-static-methods">Static Public Member Functions</a> </div> <div class="headertitle"> <div class="title">PtyProcess Class Reference</div> </div> </div><!--header--> <div class="contents"> <!-- doxytag: class="edelib::PtyProcess" --> <p>Synchronous communication with tty programs. <a href="classedelib_1_1PtyProcess.html#details">More...</a></p> <p><code>#include <<a class="el" href="PtyProcess_8h_source.html">edelib/PtyProcess.h</a>></code></p> <p><a href="classedelib_1_1PtyProcess-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-types"></a> Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#aa349f07b744a4707242be7109ef2a337">CheckPidStatus</a> { <b>Error</b> = -1, <b>NotExited</b> = -2, <b>Killed</b> = -3, <b>Crashed</b> = -4 }</td></tr> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#af0580a4ab3b0e733f3b25b79e97bee25">PtyProcess</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a398a21f0eece2c6986a5dc5cc1e0cdd1">~PtyProcess</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a780d2321bb743df44af93531aa5a0101">exec</a> (const char *command, const char **args)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#aee1560adef9fff710a2a95f5a3865a85">read_line</a> (bool block=true)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#aaa82f32deff4c8ab47a9426084bad548">write_line</a> (const char *line, bool addNewline=true)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a7f74206cf12774353aabe16e993feb94">unread_line</a> (const char *line, bool addNewline=true)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a00deb56e07c8e0737f1f6ea2a5b65c9c">set_exit_string</a> (char *exit)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a590b23232a75cdc99c3e4903db2316e4">wait_for_child</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a31149cc4b0aade8c64d2d361ac215995">wait_slave</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#abb4d369cb8a3a20c2c6e64e1ca432d6e">enable_local_echo</a> (bool enable=true)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a481b77fd92402f167470e300b5f17d89">set_terminal</a> (bool terminal)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#aac7908ea5b9126d454e52ecaafdffe34">set_erase</a> (bool erase)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a6b236d5f3e4121ffd986ff9e38082146">set_environment</a> (const char **env)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a3581b2617b6fc0b06322bff239879516">fd</a> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#aa43ae4647e6ca1a29c455059eb92fe58">pid</a> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a60bafce4ccd9af1dfc6e128465e06e17">terminate_child</a> ()</td></tr> <tr><td colspan="2"><h2><a name="pub-static-methods"></a> Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a40b834230b7bb96378a2ce235c3347fd">wait_ms</a> (int <a class="el" href="classedelib_1_1PtyProcess.html#a3581b2617b6fc0b06322bff239879516">fd</a>, int ms)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#a8d33321905166452bbcc035c160264df">check_pid</a> (pid_t <a class="el" href="classedelib_1_1PtyProcess.html#aa43ae4647e6ca1a29c455059eb92fe58">pid</a>)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1PtyProcess.html#ad645582855f27814d5a18dc7dab8e1df">check_pid_exited</a> (pid_t <a class="el" href="classedelib_1_1PtyProcess.html#aa43ae4647e6ca1a29c455059eb92fe58">pid</a>)</td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>Synchronous communication with tty programs. </p> <p><a class="el" href="classedelib_1_1PtyProcess.html" title="Synchronous communication with tty programs.">PtyProcess</a> 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. </p> </div><hr/><h2>Member Enumeration Documentation</h2> <a class="anchor" id="aa349f07b744a4707242be7109ef2a337"></a><!-- doxytag: member="edelib::PtyProcess::CheckPidStatus" ref="aa349f07b744a4707242be7109ef2a337" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="classedelib_1_1PtyProcess.html#aa349f07b744a4707242be7109ef2a337">CheckPidStatus</a></td> </tr> </table> </div> <div class="memdoc"> <p>Check process exit status for process <code>pid</code>. On error (no child, no exit), return -1. If child <code>pid</code> has exited, return its exit status, (which may be zero). If child <code>has</code> not exited, return -2. </p> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="af0580a4ab3b0e733f3b25b79e97bee25"></a><!-- doxytag: member="edelib::PtyProcess::PtyProcess" ref="af0580a4ab3b0e733f3b25b79e97bee25" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classedelib_1_1PtyProcess.html">PtyProcess</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Empty constructor </p> </div> </div> <a class="anchor" id="a398a21f0eece2c6986a5dc5cc1e0cdd1"></a><!-- doxytag: member="edelib::PtyProcess::~PtyProcess" ref="a398a21f0eece2c6986a5dc5cc1e0cdd1" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual ~<a class="el" href="classedelib_1_1PtyProcess.html">PtyProcess</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Clears data </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a8d33321905166452bbcc035c160264df"></a><!-- doxytag: member="edelib::PtyProcess::check_pid" ref="a8d33321905166452bbcc035c160264df" args="(pid_t pid)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static bool <a class="el" href="classedelib_1_1PtyProcess.html#a8d33321905166452bbcc035c160264df">check_pid</a> </td> <td>(</td> <td class="paramtype">pid_t </td> <td class="paramname"><em>pid</em></td><td>)</td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Basic check for the existence of <code>pid</code>. Returns true iff <code>pid</code> is an extant process, (one you could kill - see man kill(2) for signal 0). </p> </div> </div> <a class="anchor" id="ad645582855f27814d5a18dc7dab8e1df"></a><!-- doxytag: member="edelib::PtyProcess::check_pid_exited" ref="ad645582855f27814d5a18dc7dab8e1df" args="(pid_t pid)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int <a class="el" href="classedelib_1_1PtyProcess.html#ad645582855f27814d5a18dc7dab8e1df">check_pid_exited</a> </td> <td>(</td> <td class="paramtype">pid_t </td> <td class="paramname"><em>pid</em></td><td>)</td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Check process exit status for process <code>pid</code>. On error (no child, no exit), return Error (-1). If child <code>pid</code> has exited, return its exit status, (which may be zero). If child <code>has</code> not exited, return NotExited (-2). </p> </div> </div> <a class="anchor" id="abb4d369cb8a3a20c2c6e64e1ca432d6e"></a><!-- doxytag: member="edelib::PtyProcess::enable_local_echo" ref="abb4d369cb8a3a20c2c6e64e1ca432d6e" args="(bool enable=true)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="classedelib_1_1PtyProcess.html#abb4d369cb8a3a20c2c6e64e1ca432d6e">enable_local_echo</a> </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"><em>enable</em> = <code>true</code></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Enables/disables local echo on the pseudo tty. </p> </div> </div> <a class="anchor" id="a780d2321bb743df44af93531aa5a0101"></a><!-- doxytag: member="edelib::PtyProcess::exec" ref="a780d2321bb743df44af93531aa5a0101" args="(const char *command, const char **args)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="classedelib_1_1PtyProcess.html#a780d2321bb743df44af93531aa5a0101">exec</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>command</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char ** </td> <td class="paramname"><em>args</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>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. </p> <dl class="params"><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">command</td><td>The command to execute. </td></tr> <tr><td class="paramname">args</td><td>The arguments to the command. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a3581b2617b6fc0b06322bff239879516"></a><!-- doxytag: member="edelib::PtyProcess::fd" ref="a3581b2617b6fc0b06322bff239879516" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="classedelib_1_1PtyProcess.html#a3581b2617b6fc0b06322bff239879516">fd</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the filedescriptor of the process </p> </div> </div> <a class="anchor" id="aa43ae4647e6ca1a29c455059eb92fe58"></a><!-- doxytag: member="edelib::PtyProcess::pid" ref="aa43ae4647e6ca1a29c455059eb92fe58" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="classedelib_1_1PtyProcess.html#aa43ae4647e6ca1a29c455059eb92fe58">pid</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the pid of the process </p> </div> </div> <a class="anchor" id="aee1560adef9fff710a2a95f5a3865a85"></a><!-- doxytag: member="edelib::PtyProcess::read_line" ref="aee1560adef9fff710a2a95f5a3865a85" args="(bool block=true)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* <a class="el" href="classedelib_1_1PtyProcess.html#aee1560adef9fff710a2a95f5a3865a85">read_line</a> </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"><em>block</em> = <code>true</code></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Reads a line from the program's standard out. Depending on the <em>block</em> parameter, this call blocks until a single, full line is read. </p> <dl class="params"><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">block</td><td>Block until a full line is read? </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The output string. </dd></dl> </div> </div> <a class="anchor" id="a6b236d5f3e4121ffd986ff9e38082146"></a><!-- doxytag: member="edelib::PtyProcess::set_environment" ref="a6b236d5f3e4121ffd986ff9e38082146" args="(const char **env)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1PtyProcess.html#a6b236d5f3e4121ffd986ff9e38082146">set_environment</a> </td> <td>(</td> <td class="paramtype">const char ** </td> <td class="paramname"><em>env</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Set additinal environment variables </p> </div> </div> <a class="anchor" id="aac7908ea5b9126d454e52ecaafdffe34"></a><!-- doxytag: member="edelib::PtyProcess::set_erase" ref="aac7908ea5b9126d454e52ecaafdffe34" args="(bool erase)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1PtyProcess.html#aac7908ea5b9126d454e52ecaafdffe34">set_erase</a> </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"><em>erase</em></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Overwrites the password as soon as it is used. Relevant only to some subclasses </p> </div> </div> <a class="anchor" id="a00deb56e07c8e0737f1f6ea2a5b65c9c"></a><!-- doxytag: member="edelib::PtyProcess::set_exit_string" ref="a00deb56e07c8e0737f1f6ea2a5b65c9c" args="(char *exit)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1PtyProcess.html#a00deb56e07c8e0737f1f6ea2a5b65c9c">set_exit_string</a> </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"><em>exit</em></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Sets the exit string. If a line of program output matches this, waitForChild() will terminate the program and return. </p> </div> </div> <a class="anchor" id="a481b77fd92402f167470e300b5f17d89"></a><!-- doxytag: member="edelib::PtyProcess::set_terminal" ref="a481b77fd92402f167470e300b5f17d89" args="(bool terminal)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1PtyProcess.html#a481b77fd92402f167470e300b5f17d89">set_terminal</a> </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"><em>terminal</em></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Enables/disables terminal output. Relevant only to some subclasses </p> </div> </div> <a class="anchor" id="a60bafce4ccd9af1dfc6e128465e06e17"></a><!-- doxytag: member="edelib::PtyProcess::terminate_child" ref="a60bafce4ccd9af1dfc6e128465e06e17" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1PtyProcess.html#a60bafce4ccd9af1dfc6e128465e06e17">terminate_child</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Terminate the child process if still running </p> </div> </div> <a class="anchor" id="a7f74206cf12774353aabe16e993feb94"></a><!-- doxytag: member="edelib::PtyProcess::unread_line" ref="a7f74206cf12774353aabe16e993feb94" args="(const char *line, bool addNewline=true)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1PtyProcess.html#a7f74206cf12774353aabe16e993feb94">unread_line</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>line</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>addNewline</em> = <code>true</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Puts back a line of input. </p> <dl class="params"><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">line</td><td>The line to put back. </td></tr> <tr><td class="paramname">addNewline</td><td>Adds a '<br/> ' to the line. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a590b23232a75cdc99c3e4903db2316e4"></a><!-- doxytag: member="edelib::PtyProcess::wait_for_child" ref="a590b23232a75cdc99c3e4903db2316e4" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="classedelib_1_1PtyProcess.html#a590b23232a75cdc99c3e4903db2316e4">wait_for_child</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Waits for the child to exit </p> </div> </div> <a class="anchor" id="a40b834230b7bb96378a2ce235c3347fd"></a><!-- doxytag: member="edelib::PtyProcess::wait_ms" ref="a40b834230b7bb96378a2ce235c3347fd" args="(int fd, int ms)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static int <a class="el" href="classedelib_1_1PtyProcess.html#a40b834230b7bb96378a2ce235c3347fd">wait_ms</a> </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>fd</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>ms</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Wait <code>ms</code> miliseconds (ie. 1/10th of a second is 100ms), using <code>fd</code> 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.</p> <p><code>ms</code> must be in the range 0..999 (ie. the maximum wait duration is 999ms, almost one second). </p> </div> </div> <a class="anchor" id="a31149cc4b0aade8c64d2d361ac215995"></a><!-- doxytag: member="edelib::PtyProcess::wait_slave" ref="a31149cc4b0aade8c64d2d361ac215995" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int <a class="el" href="classedelib_1_1PtyProcess.html#a31149cc4b0aade8c64d2d361ac215995">wait_slave</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>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. </p> </div> </div> <a class="anchor" id="aaa82f32deff4c8ab47a9426084bad548"></a><!-- doxytag: member="edelib::PtyProcess::write_line" ref="aaa82f32deff4c8ab47a9426084bad548" args="(const char *line, bool addNewline=true)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classedelib_1_1PtyProcess.html#aaa82f32deff4c8ab47a9426084bad548">write_line</a> </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>line</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">bool </td> <td class="paramname"><em>addNewline</em> = <code>true</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Writes a line of text to the program's standard in. </p> <dl class="params"><dt><b>Parameters:</b></dt><dd> <table class="params"> <tr><td class="paramname">line</td><td>The text to write. </td></tr> <tr><td class="paramname">addNewline</td><td>Adds a '<br/> ' to the line. </td></tr> </table> </dd> </dl> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>edelib/<a class="el" href="PtyProcess_8h_source.html">PtyProcess.h</a></li> </ul> </div><!-- contents --> <hr class="footer"/><address class="footer"><small> Generated on Tue Jun 5 2012 17:49:03 for edelib by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.7.6.1 </small></address> </body> </html>