Good guess. Create two pipes with the pipe() call. One will be shell input, one will be shell output. Two pipes, not three -- stdout and stderr usually just go to the same output unless the shell's...
I'd start with the Simple Directmedia Layer (http://www.libsdl.org/). It's a trimmed-down interface for single-window applications that handles keyboard interfacing and graphics and multimedia in a...