Launch a subprocess in a pseudo terminal (pty), and interact with both
the process and its pty.
Sometimes, piping stdin and stdout is not enough. There might be a
password prompt that doesn’t read from stdin, output that changes when
it’s going to a pipe rather than a terminal, or curses-style
interfaces that rely on a terminal. If you need to automate these
things, running the process in a pseudo terminal (pty) is the answer.