What is special about /dev/tty?

Unix

Unix Problem Overview


ls -la /dev/tty shows the output:

crw-rw-rw- 1 root tty 5, 0 Dec 14 22:21 /dev/tty

What does c at the beginning mean? When I do something like pwd > /dev/tty it prints to the stdout. What does the file /dev/tty contain?

Unix Solutions


Solution 1 - Unix

The 'c' means it's a character device. tty is a special file representing the 'controlling terminal' for the current process.

Character Devices

Unix supports 'device files', which aren't really files at all, but file-like access points to hardware devices. A 'character' device is one which is interfaced byte-by-byte (as opposed to buffered IO).

TTY

/dev/tty is a special file, representing the terminal for the current process. So, when you echo 1 > /dev/tty, your message ('1') will appear on your screen. Likewise, when you cat /dev/tty, your subsequent input gets duplicated (until you press Ctrl-C).

/dev/tty doesn't 'contain' anything as such, but you can read from it and write to it (for what it's worth). I can't think of a good use for it, but there are similar files which are very useful for simple IO operations (e.g. /dev/ttyS0 is normally your serial port)

This quote is from http://tldp.org/HOWTO/Text-Terminal-HOWTO-7.html#ss7.3 : > /dev/tty stands for the controlling terminal (if any) for the current > process. To find out which tty's are attached to which processes use > the "ps -a" command at the shell prompt (command line). Look at the > "tty" column. For the shell process you're in, /dev/tty is the > terminal you are now using. Type "tty" at the shell prompt to see what > it is (see manual pg. tty(1)). /dev/tty is something like a link to > the actually terminal device name with some additional features for > C-programmers: see the manual page tty(4).

Here is the man page: http://linux.die.net/man/4/tty

Solution 2 - Unix

/dev/tty is a synonym for the controlling terminal (if any) of the current process. As jtl999 says, it's a character special file; that's what the c in the ls -l output means.

man 4 tty or man -s 4 tty should give you more information, or you can read the man page online here.

Incidentally, pwd > /dev/tty doesn't necessarily print to the shell's stdout (though it is the pwd command's standard output). If the shell's standard output has been redirected to something other than the terminal, /dev/tty still refers to the terminal.

You can also read from /dev/tty, which will normally read from the keyboard.

Solution 3 - Unix

The 'c' means it's a character special file.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBruceView Question on Stackoverflow
Solution 1 - UnixlaherView Answer on Stackoverflow
Solution 2 - UnixKeith ThompsonView Answer on Stackoverflow
Solution 3 - Unixjtl999View Answer on Stackoverflow