KPty 5.109.0
|
Provides primitives for opening & closing a pseudo TTY pair, assigning the controlling TTY, utmp registration and setting various terminal attributes. More...
#include <kpty.h>
Public Member Functions | |
KPty () | |
Constructor. | |
KPty (const KPty &)=delete | |
~KPty () | |
Destructor: | |
void | close () |
Close the pty master/slave pair. | |
void | closeSlave () |
Close the pty slave descriptor. | |
void | login (const char *user=nullptr, const char *remotehost=nullptr) |
Creates an utmp entry for the tty. | |
void | logout () |
Removes the utmp entry for this tty. | |
int | masterFd () const |
bool | open () |
Create a pty master/slave pair. | |
bool | open (int fd) |
Open using an existing pty master. | |
bool | openSlave () |
Open the pty slave descriptor. | |
KPty & | operator= (const KPty &)=delete |
void | setCTty () |
Creates a new session and process group and makes this pty the controlling tty. | |
void | setCTtyEnabled (bool enable) |
Whether this will be a controlling terminal. | |
bool | setEcho (bool echo) |
Set whether the pty should echo input. | |
bool | setWinSize (int lines, int columns) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Change the logical (screen) size of the pty. | |
bool | setWinSize (int lines, int columns, int height, int width) |
Change the logical (screen) size of the pty. | |
int | slaveFd () const |
bool | tcGetAttr (struct ::termios *ttmode) const |
Wrapper around tcgetattr(3). | |
bool | tcSetAttr (struct ::termios *ttmode) |
Wrapper around tcsetattr(3) with mode TCSANOW. | |
const char * | ttyName () const |
Protected Member Functions | |
__attribute__ ((visibility("hidden"))) explicit KPty(KPtyPrivate *d) | |
Protected Attributes | |
std::unique_ptr< KPtyPrivate > const | d_ptr |
Provides primitives for opening & closing a pseudo TTY pair, assigning the controlling TTY, utmp registration and setting various terminal attributes.
KPty::KPty | ( | ) |
Constructor.
KPty::~KPty | ( | ) |
Destructor:
If the pty is still open, it will be closed. Note, however, that an utmp registration is not undone.
void KPty::close | ( | ) |
Close the pty master/slave pair.
void KPty::closeSlave | ( | ) |
Close the pty slave descriptor.
When creating the pty, KPty also opens the slave and keeps it open. Consequently the master will never receive an EOF notification. Usually this is the desired behavior, as a closed pty slave can be reopened any time - unlike a pipe or socket. However, in some cases pipe-alike behavior might be desired.
After this function was called, slaveFd() and setCTty() cannot be used.
void KPty::login | ( | const char * | user = nullptr , |
const char * | remotehost = nullptr |
||
) |
Creates an utmp entry for the tty.
This function must be called after calling setCTty and making this pty the stdin.
user | the user to be logged on |
remotehost | the host from which the login is coming. This is not the local host. For remote logins it should be the hostname of the client. For local logins from inside an X session it should be the name of the X display. Otherwise it should be empty. |
void KPty::logout | ( | ) |
Removes the utmp entry for this tty.
int KPty::masterFd | ( | ) | const |
This function should be called only while the pty is open.
bool KPty::open | ( | ) |
Create a pty master/slave pair.
bool KPty::open | ( | int | fd | ) |
Open using an existing pty master.
fd | an open pty master file descriptor. The ownership of the fd remains with the caller; it will not be automatically closed at any point. |
bool KPty::openSlave | ( | ) |
Open the pty slave descriptor.
This undoes the effect of closeSlave().
void KPty::setCTty | ( | ) |
Creates a new session and process group and makes this pty the controlling tty.
void KPty::setCTtyEnabled | ( | bool | enable | ) |
Whether this will be a controlling terminal.
This is on by default. Disabling the controllig aspect only makes sense if another process will take over control or there is nothing to control or for technical reasons control cannot be set (this notably is the case with flatpak-spawn when used inside a sandbox).
enable | whether to enable ctty set up |
bool KPty::setEcho | ( | bool | echo | ) |
Set whether the pty should echo input.
Echo is on by default. If the output of automatically fed (non-interactive) PTY clients needs to be parsed, disabling echo often makes it much simpler.
This function can be used only while the PTY is open.
echo | true if input should be echoed. |
true
on success, false otherwise bool KPty::setWinSize | ( | int | lines, |
int | columns | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Change the logical (screen) size of the pty.
The pixel size is set to zero.
bool KPty::setWinSize | ( | int | lines, |
int | columns, | ||
int | height, | ||
int | width | ||
) |
Change the logical (screen) size of the pty.
The default is 24 lines by 80 columns in characters, and zero pixels.
This function can be used only while the PTY is open.
lines | the number of character rows |
columns | the number of character columns |
height | the view height in pixels |
width | the view width in pixels |
true
on success, false otherwiseint KPty::slaveFd | ( | ) | const |
This function should be called only while the pty slave is open.
bool KPty::tcGetAttr | ( | struct ::termios * | ttmode | ) | const |
Wrapper around tcgetattr(3).
This function can be used only while the PTY is open. You will need an #include <termios.h> to do anything useful with it.
ttmode | a pointer to a termios structure. Note: when declaring ttmode, struct ::termios must be used - without the '::' some version of HP-UX thinks, this declares the struct in your class, in your method. |
true
on success, false otherwise bool KPty::tcSetAttr | ( | struct ::termios * | ttmode | ) |
Wrapper around tcsetattr(3) with mode TCSANOW.
This function can be used only while the PTY is open.
ttmode | a pointer to a termios structure. |
true
on success, false otherwise. Note that success means that at least one attribute could be set. const char * KPty::ttyName | ( | ) | const |
This function should be called only while the pty is open.