ptybandage — wrap a transparent pty around a program
ptybandage obtains a new pty and runs
subprogram under it.
This has the following effects:
Descriptors 0, 1, and 2 of
subprogram are redirected to the pty.
ptybandage's input is transparently forwarded to the pty's input; the pty's output is transparently forwarded to ptybandage's output.
The pty's mode is set to the mode of ptybandage's controlling tty. Meanwhile, ptybandage's controlling tty is set to raw mode.
subprogram exits, ptybandage exits with the same exit code, after restoring the mode of its controlling tty.
subprogram stops, ptybandage stops with the same signal, temporarily restoring the mode of its controlling tty.
When ptybandage continues,
subprogram's process group will receive a SIGCONT.
ptybandage forwards window-size changes to the pty.
The controlling tty of
subprogram is replaced with the pty.
As an added bonus, ptybandage gives
subprogram descriptor 3 pointing to
/dev/tty, and an environment variable
TTY giving the name of the pty.
Beware: ptybandage also closes descriptors 4, 5, and 9.
ptybandage is useful for handling programs that refuse to run inside a pipe.
As far as
subprogram can see, it is talking to a tty.
ptybandage doesn't mind being put inside a pipe.
ptybandage also fools isatty(3).
subprogram uses stdio, its output will be line-buffered.
ptybandage is a synonym for ptyget ptyio -t ptyspawn. ptyspawn(1) options may be used with ptybandage.