Advanced Programming in the Unix Environment, 2nd Edition has a superb chapter on the pseudo-terminal layer available in Linux. The best part is the source code which contains a pty
driver and very clearly demonstrates how to use the pty
interfaces. (The pty
program it builds is useful in its own right if you want to drive a terminal-only program programmatically but don’t wish to use expect(1)
.)