You can change the settings for where a job's output goes, and where its input comes from, with the console stanza. This should be one of output (input and output from /dev/console), owner (as output and Control-C also sent the process) or none (the default; input and output to /dev/null).

What I am trying to achieve: understand VTs and upstart enough to write an interactive startup script.

Related bugs

Related FAQ:

The console stanza defines what file descriptor the standard input, output and error file descriptors are bound to, and any special properties of that file descriptor.

"none" means that all three are bound to /dev/null
"output" means that all three are bound to /dev/console
"owner" means that all three are bound to /dev/console AND the TIOCSCTTY ioctl() is called on it; making the console the "controlling tty" for the process - and as such it receives tty events such as Control-C and will be hung-up if another process takes the controlling tty.