Basic Concepts
① Tty (collectively referred to as the terminal device ):
Tty is derived from Teletypes or teletypewriters. Originally, it refers to a telex typewriter, which reads and sends messages through a printer keyboard through a serial line. Later, it was replaced by a keyboard and a display, so now it is more appropriate to call the terminal.
A terminal is a type of terminal device. It has multiple types and generally uses tty for short.
② Pty (virtual terminal ):
But if we remotely telnet to the host or use xterm, do we still need a terminal to interact? Yes, this is the virtual terminal pty (pseudo-tty)
③ Pts/ptmx (combining pts/ptmx to implement pty ):
Pts (pseudo-terminal slave) is the implementation method of pty. It is used with ptmx (pseudo-terminal master) to implement pty.
Linux terminal
In the special file directory/dev/of a Linux system device, there are generally the following types of special device files on the terminal:
① Serial port terminal (/dev/ttySn)
The Serial Port Terminal (Serial Port Terminal) is a Terminal device connected by a computer Serial Port. The computer regards each serial port as a character device. For some time, these serial port devices are usually called terminal devices, because at that time they were used to connect terminals. The device names corresponding to these serial ports are/dev/tts/0 (or/dev/ttyS0),/dev/tts/1 (or/dev/ttyS1), etc, the device numbers are (), (), and so on, respectively, corresponding to COM1 and COM2 in the DOS system. To send data to a port, You can redirect the standard output to these special file names on the command line. For example, if you type echo test>/dev/ttyS1 at the command line prompt, the word "test" is sent to the device connected to the ttyS1 (COM2) port. Can be connected to the serial port for the experiment.
② Pseudo Terminal (/dev/pty /)
The Pseudo Terminal is a pair of logical Terminal devices (namely, the master and slave devices, and the operations on the master will be reflected on the slave ).
For example,/dev/ptyp3 and/dev/ttyp3 (or/dev/pty/m3 and/dev/pty/s3 in the device file system ). They are not directly related to physical devices. If a program regards ptyp3 (master device) as a serial port device, the read/write operations on the port are reflected in another ttyp3 (slave Device) corresponding to the logical terminal device. Ttyp3 is the logical device used by another program for read/write operations.
In this way, two programs can communicate with each other through this logical device, and one of the programs using ttyp3 thinks they are communicating with a serial port. This is like pipeline operations between logical device pairs. For ttyp3 (s3), any program designed to use a serial port device can use this logical device. However, for programs that use ptyp3, a dedicated design is required to use the ptyp3 (m3) logical device.
For example, if someone uses a telnet program to connect to your computer online, the telnet program may start to connect to the device ptyp2 (m2) (a Pseudo Terminal port ). At this time, a getty program should run on the corresponding ttyp2 (s2) port. When telnet obtains a character from the remote end, the character is passed to the getty program through m2 and s2, the getty program returns the "login:" string information to the network through s2, m2, and telnet. In this way, the login program communicates with the telnet program through a "Pseudo Terminal. By using appropriate software, you can connect two or more Pseudo Terminal devices to the same physical serial port.
Before using the device filesystem, a complicated file name naming method was used to obtain a large number of special files of Pseudo Terminal devices. Because there are only 16 ttyp (ttyp0-ttypf) device files, to get more logical device pairs, use characters such as q, r, s to replace p. For example, ttys8 and ptys8 are Pseudo Terminal Device pairs. However, this naming method is still used in Linux systems such as RedHat.
However, Unix98 on Linux does not use the above method, but uses the "pty master" method, such as/dev/ptm3. Its corresponding end is automatically created as/dev/pts/3. In this way, a pty Pseudo Terminal can be provided as needed. Directory/dev/pts is a file system of the devpts type and can be seen in the list of loaded file systems. Although "file"/dev/pts/3 seems to be one of the device's file systems, it is actually a completely different file system.
That is: TELNET ---> TTYP3 (S3: slave) ---> PTYP3 (M3: master) ---> GETTY
========================================================== ========
Lab:
1. open one or N terminal windows under X
2. # ls/dev/pt *
3. Close the terminal window under X and run it again. Compare the output information twice.
In the RHEL4 environment: the output is/dev/ptmx/dev/pts/1. One (master) to multiple (slave) conditions exist.
========================================================== ========
③ Control terminal (/dev/tty)
If the current process has a control Terminal (Controlling Terminal),/dev/tty is the device special file of the control Terminal of the current process. You can run the "ps-ax" command to check which control terminal the process is connected. For the shell you log on to,/dev/tty is the terminal you are using, and the device number is (5, 0 ). Run the "tty" command to check which actual terminal device it corresponds. /Dev/tty is similar to a connection to the actually used terminal device.
④ Console terminal (/dev/ttyn,/dev/console)
In Linux, a computer monitor is usually called a Console ). It simulates a Linux terminal (TERM = Linux), and some special files of the device are associated with it: tty0, tty1, tty2, and so on. When you log on to the console, tty1 is used. With Alt + [F1-F6] keys, we can switch to tty2, tty3 and so on. Tty1-tty6 is called virtual terminal, and tty0 is an alias of the current virtual terminal, the information generated by the system will be sent to the terminal. Therefore, no matter which virtual terminal is being used, the system information will be sent to the console terminal. You can log on to different virtual terminals, so that the system can have several different sessions at the same time. Only the system or Super User root can write data to/dev/tty0, that is, the following example:
1. # tty (view the current TTY)
/Dev/tty1
2. # echo "test">/dev/tty0
Test tty0
⑤ Virtual terminal (/dev/pts/n)
A Pseudo Terminal in Xwindows mode.
⑥ Other types
In Linux, there are many other types of special files on terminal devices for many different character devices. For example,/dev/ttyIn terminal devices for ISDN devices. I will not go into details here.
FAQ: terminal and console
Since many of my friends have never been very clear about the concepts of terminals, I wrote this FAQ to help you understand these concepts. If this is not the case, please send a letter to us. Q: What is/dev/tty?
A: tty devices include virtual consoles, serial ports, and Pseudo Terminal devices.
/Dev/tty indicates the current tty device. Input echo "hello">/dev/tty in the current terminal, which will be directly displayed on the current terminal.
Q: What is/dev/ttyS?
A:/dev/ttyS * is A serial terminal device.
Q: What is/dev/pty?
A:/dev/pty * is A Pseudo Terminal. The so-called Pseudo Terminal is A logical terminal device and is mostly used to simulate terminal programs. For example, we open a terminal in X Window and log on to the Linux host using telnet or ssh in Windows, the pty device is used at this time (to be precise, the pty slave device should be used ).
Q:/dev/tty0 and/dev/tty1... What is/dev/tty63? What are the differences between them?
A:/dev/tty0 indicates the current virtual console, while/dev/tty1 indicates the first virtual console. For example, when ALT + F2 is used for switching, the system's virtual console is/dev/tty2, and the current console points to/dev/tty2
Q: How do I determine the current terminal (or console )?
A: Use the tty command to determine the current terminal or console.
Q: Is/dev/console a symbolic link to/dev/tty0?
A: most of the current texts refer to/dev/console as A link to/dev/tty0 (including "Linux kernel source code Scenario Analysis"), but this is inaccurate. According to the kernel documentation, before version 2.1.71,/dev/console can be linked to/dev/tty0 or other tty * based on different system settings. After version 2.1.71, it is completely controlled by the kernel. Currently, you can log on to/dev/console only in single-user mode (you can enter the tty command in single-user mode for confirmation ).
Q: What is the difference between/dev/tty0 and/dev/fb?
A: You can use/dev/tty0 to access the video card in A system not enabled by the Framebuffer device.
Q: What text can I refer to for the differences between a terminal and a console?
A: You can refer to the "terminal devices" section in Documents of the kernel. In addition, section 8.7 of Linux kernel source code scenario analysis and section 3.9 of Operating Systems: Design and Implementation (section 3rd for version 3.8) all of them provide a good introduction to the concepts and history of terminal devices. In addition, the introduction to terminal devices is also introduced in Modern Operating system. The text content is roughly the same as that of Operating Systems: Design and Implementation. Note that Operating Systems: Design and Implementation divides terminal devices into three categories, while Modern Operating system classifies terminal hardware devices into two categories, the difference is that the former uses X Terminal as a category. PS: Only 2410 of 2.6 is called ttySAC0, and 9200 is called ttyS0.
Author "☆cainiao afan's path to growth"