Server for Information Technologies ������ ��������������
������� �������������� ����������
(095) 932-9212, 932-9213, 939-0783
E-mail: [email protected]
������ �������� ����(!) ������������� ���������� CIT Forum CD-ROM

TERMIO(7)

��������
termio - ����� ������������ ���������

��������
��� ����������� ����� ����� ���������� ���� � ��� �� ����� ���������, ��� ����������� �� ������������ ����������.

������ ��� �������� �����, ���������������� ���������, ������� ������� ������������ ����������. �� �������� ���������������� ��������� ����� ���� ��������� ����� �����; ��� ����������� ���������� getty(1M) � ���������� ���������������� ����������� ������, ������� � ����������. ����� ������ �� ������������ ������, �� ��������������� � ������� ���������, ��� �������� ��� ������� ������ ���������� ����������� ���������� ��� ������ ������. ����������� �������� ������ ������ ���� ��� ��������� �������� ������ � ����������, ��� ��� ����������� ����. ����������� �������� ����������� ���������, ����������� ����������� ���������� ������ fork(2). ���������� ����� ������ [� ������� ���������� ������ setpgrp(2)] ������� ����� ��������� ��� �����.

��������� �������� � ��������� ���������� (������������) ������. ������� ����� ������� � ����� ������ �������, ���� ����� ���������� �����. ������ �������� ���������� ������ � ���� �������: ����� ������������� ��������� ����� �������� �������� (��� ��������� �������� �����) ��� ����� ������������ ������� ����������� ���������� ����� �������� ��������, � ������� ��������� �� �� ���������. � ������� ������ ���� ������ ����� 256 ��������. ���� ������ ����� ���������, ����� ������������ � ��� ����������� ������� �������� ��� ������� �����������.

������ ������������ ���� �������������� ���������. ������ �������������� ��������� �������� ������, ����� ����� ��� ����� ������. ��� ��������, ��� ��� ������� ������ ������� ������������������ �� ��� ���, ���� �� ����� ������� ��� ������. ��� ������, ���������� �� ����� ����������� ��������, ����� ������ �� ����� ����� ������, ������ �� ����������� ��� ������ ������ �����: ����� ��������� ����� ���������� �������� (���� ����) � ���������� �� ����� ��������.

�� ����� ����� ������ ����������� ��������� �������� ����� � �����������. �� ��������� ������ # "��������" ��������� ��������� ������ (�� �� ����� ������ ������). ������ @ ���������� ��� �������� ������ �, ���� �����, ������ ������� ������. ��� ���� ����������� ������� ������������ ������ �� ������� �����. ���, ����� ����� ���������, ����������� � ��������� ��������, �������� ���������� ������� �������� � �������� ��������� � ������, �� �� ������ ����� ������ ���� ��������� �� ��������.

��� ����� ��������� ������� ��������� ����������� �������. ���� ����������� ��� ������� � ��������������� ��������������� �������:

INTR (������ DEL � ��������� ASCII)
���������� ������ ���������� (SIGINT), ���������� ���� ���������, ��� ������� ������ �������� �������� �����������. ������ ������ ����� ������� �������������, �� ���� ��������, ����������� ��������������� ���� ������ ��� ���������� ��� ��-������ [��. signal(2)].
QUIT (CTRL+\, ��� ������ FS � ��������� ASCII)
���������� ������ ������ (SIGQUIT), ��� ����������� ������� �� ������� ������� �� ������ �������������, �� � � ������� �������� ��������� ���� � ������� ������ �������� [��. core(4)].
SWTCH (CTRL+Z, ��� ������ SUB � ��������� ASCII)
������������ ���������� ��������� shell'�� shl(1) ��� ������������ ����� ������������ shell'�.
ERASE (#)
�������� ���������� ������, �� �� ����� ������ ������, ����������� ��������� NL, EOF ��� EOL.
KILL (@)
���������� ��� ������, ���������� ��������� NL, EOF ��� EOL.
EOF (CTRL+D, ��� ������ EOT � ��������� ASCII)
����� ���� ����������� ��� ��������� �������� ����� ����� ��� ����� � ���������. ��� ��������� ����� ������� ��� �������������� �������, �� ������ �������� ������, ���������� ��������, � ��� ������ EOF �������������. ����� �������, ���� �������������� �������� ���, �� ���� EOF ���������� � ������ ������, � ������� ����� �������� 0 ��������, ��� � �������� ����������� ������������ ����� �����.
NL (������ LF � ��������� ASCII)
����������� ����������� ����� (������� ������). ��� ������ �������� ��� ������������.
EOL (������ NUL � ��������� ASCII)
�������������� ����������� �����, ����������� NL. ������ �� ������������.
EOL2
��� ���� �������������� ����������� �����.
STOP (CTRL+S, ��� ������ DC3 � ��������� ASCII)
������ ������������ ��� ��������� ������������ ������, ����� ����� ��������� ����� �� ������ ���������. ���� ����� �������������, ������� STOP ������������ � �� ��������.
START (CTRL+Q, ��� ������ DC1 � ��������� ASCII)
������������ ��� ������������� ������, ����������������� � ������� ������� STOP. ���� ����� �� �������������, �� ������� START ������������ � �� ��������. ������� START � STOP ������ �������� ��� ������������.

��� ���������� ������� INTR, QUIT, SWTCH, ERASE, KILL, EOF � EOL ����� ��������� �������, �������� �� ��������������� [��. stty(1)]. ������� ERASE, KILL � EOF ����� ������������, �� ���� ������ �� ����������� �������, ���� ��������� ����� ���� ������ \.

���� ������� �������, �� ���� ���������, ��� ������� ������ �������� �������� �����������, ���������� ������ ������������ ����� (SIGHUP). ���� �� ������������� ��������� ����� �������, �� ��� ������������� ������� �������������� ��������. ���� ������ ������������ ������������, �� ��� ����������� �������� ������ ���������� ������� ����� �����. ����� ������� ��������, �������� � ��������� � ����������� ����� �����, ����� ��������������� ������� ����������� � ������ ������� �����.

��� ���������� ������ ������ ��� ����� �������� ��� ���������� ��������� ������ �����, ����� ����� ��������, ���������� �����, ��������. �������������� �������� �������� ����������� ����������� �� ����������, �� ���� �����������, � ������� ������. ���� ������� ��������� ������� �������, ��� ��� ����� ���� ��������, ��� ������������, ����� ������ ������� ������ �������� ��������� ������. ��� ���������� ������� �� ���������� ���������� �������� ���������� ��������� ��������������.

� ������� ���������� ������ ioctl(2) ��� ������������� ������� ����� ��������� ��������� ����������� ��������. ��� �������, ��� ���� ������������ ��������� ���������, ��������� �� ���������� ����� <termio.h>:

#define NCC 8
struct termio {
  unsigned short c_iflag;  /* ������ ����� */
  unsigned short c_oflag;  /* ������ ������ */
  unsigned short c_cflag;  /* ����������� ������ */
  unsigned short c_lflag;  /* ��������� ������ */
  char           c_line;   /* ����� ������ � ������ */
  unsigned char  c_cc[NCC];/* ����������� ������� */
};

������������ ����������� ������� � �������� �������� � ������� c_cc. ���� ��������� ������, ����������� ��������, � ��������������� �������:
0VINTRDEL
1VQUITFS
2VERASE#
3VKILL@
4VEOF (VMIN)EOT
5VEOL (VTIME)NUL
6VEOL2
7VSWTCHSUB

���� c_iflag ��������� �������� ��������� ������������� �����:
IGNBRK0000001������������ ������ ���������.
BRKINT0000002��� ������� ��������� ������������ ������ ����������.
IGNPAR0000004������������ ������� � �������� ��������.
PARMRK0000010�������� ������ ��������.
INPCK0000020��������� �������� ��������.
ISTRIP0000040����������� ������� ���.
INLCR0000100��������������� ������� ������ � ������� �������.
IGNCR0000200������������ �������� �������.
ICRNL0000400��������������� ������� ������� � ������� ������.
IUCLC0001000��������������� ������� ����� � �����.
IXON0002000��������� �����/������� ���������� �������.
IXANY0004000��������� ������ ������� ������������ �����.
IXOFF0010000��������� �����/������� ���������� ������.

���� ���������� ��� IGNBRK, �� ������� � �������� ��������� � �������� ������������ (�� ���� �� ��������� � ������� �����). � ��������� ������, ��� ������������� ���� BRKINT, ��������� ����� ������, ����������� ������ ����, (������� ������� ����������) �������� � ��������� ������� ���������� � ����������� �������� �����/������.

���� ���������� ��� PARMRK, �� ������� � ������� ��������� ��� �������� (���� ��� �� ������������) �������� � ���� ������������������ �� ���� ����: 0377, 0, x, ��� x - ��� ������, ���������� ��� ������������� ������. ����� �������� � ���� ������ ��������������� (���� ��� ISTRIP �� ����������) ������ 0377 �������� ��� ���� 0377, 0377. ���� ��� PARMRK �� ����������, �� ��� ������������� ������ (������� �� ������������) �������� ������ NUL (0).

���� ���������� ��� INPCK, �� ��������� �������� �������� ��� �����, � ��������� ������ �������� ��������. ��� ��������� ����������� �������� ������ ��� ������ �������� ��� �����.

���� ���������� ��� ISTRIP, �� � ���������� �������� �������� ������� ������������� ������� ���; � ��������� ������ �������������� ��� 8 ���.

���� ���������� ��� INLCR, �� �������� ������� �������� ������ ������������� � ������� �������. ���� ���������� ��� IGNCR, �� ������� �������� ������� ������������ (�� ��������); � ��������� ������, ���� ���������� ��� ICRNL, ������� �������� ������� ������������� � ������� ������.

���� ���������� ��� IUCLC, �� ������� ����� ������������� � ��������������� ����� �����.

���� ���������� ��� IXON, �� ��������� �����/������� ���������� �������. ���������� ������ STOP ������������ �����, � ������ START ��� ����������. ��� �����/������� ������� ������������, �� ���� �� ��������. ���� ���������� ��� IXANY, �� ����� ��������� ������ ���������� ���������������� �����.

���� ���������� ��� IXOFF, �� ������� ����� ���������� �����/������� �������, ����� ������� ����� ����� �����/ ���������.

� ��������� ��������� ��� ���� ���� c_iflag ����� 0.

���� c_oflag ���������� ��������� ��������� ������:
OPOST0000001������������������ �����.
OLCUC0000002��������������� ����� ����� � �������.
ONLCR0000004��������������� ������� ������ � ���� (������� ������, ������� �������).
OCRNL0000010��������������� ������� ������� � ������� ������.
ONOCR0000020�� �������� ������� ������� � ������� �������.
ONLRET0000040������� ������ ��������� ������� �������� �������.
OFILL0000100������������ ��� �������� �������� ��������-������������.
OFDEL0000200��������-������������ �������� DEL (�� ��������� - NUL).
NLDLY0000400������� �������� ��� �������� ������:
NL00
NL10000400
CRDLY0003000������� �������� ��� �������� �������:
CR00
CR10001000
CR20002000
CR30003000
TABDLY0014000������� �������� ��� �������������� ���������:
TAB00
TAB10004000
TAB20010000
TAB30014000 ������������� ��������� � �������.
BSDLY0020000������� �������� ��� �������� �� ���:
BS00
BS10020000
VTDLY0040000������� �������� ��� ������������ ���������:
VT00
VT10040000
FFDLY0100000������� �������� ��� �������� � ����� ��������:
FF00
FF10100000

���� ���������� ��� OPOST, �� ��������� ������� ������������������, ����� ��� ���������� �� �������� ��� ���������. �������� ��������� ������������ ���������� ������ ������ ������.

���� ���������� ��� OLCUC, �� ����� ����� ������������� ��� ������ � �������. ������ ����� ������ ������������ ������ � IUCLC.

���� ���������� ��� ONLCR, �� ������� ������ ������������� � ���� �������� (������� ������, ������� �������). ���� ���������� ��� OCRNL, �� ������� ������� ������������� � ������� ������. ���� ���������� ��� ONOCR, �� � ������� 0 (������ ������� ������) ������� ������� �� ���������. ���� ���������� ��� ONLRET, �� ��������������, ��� ������� ������ ��������� ������� �������� �������; ����� ������� ���������� �������, ������������ ��������, ������������ ��� �������� �������. � ��������� ������ ��������������, ��� ������� ������ ������ ������ ��� �������� � ����� ������: ����� ������� �� ����������. ���� ���������� ��� ������ �������� �������, ����� ������� ���������� �������.

���� �������� ���������� �����, �� ������� ������������ ��������. �������� ��������� ��������� ������������ ��� ���� �����������, ��������� �������� �� �������� ��������� ��������. � ����� ������ 0 �������� ���������� ��������. ���� ���������� ��� OFILL, �� ������ ��������� �������� ����� �������������� �������� ��������-������������. �������� ����� ������� ��� ���������������� ����������, ����� ����� ����������� ��������. ���� ���������� ��� OFDEL, �� ��������-������������ �������� DEL, � ��������� ������ NUL.

������������ �������� ��� ������������ ��������� ��� �������� � ����� �������� ���������� �������� 2 �������.

�������� ��� �������� ������ ����� �������� 0.1 �������. ���� ���������� ��� ONLRET, �� ������ �������� ��� �������� ������ ������������ �������� ��� �������� �������. ���� ���������� ��� OFILL, ����� ������������ ��� �������-�����������.

�������� ���� 1 ��� �������� ������� ������� �� ������� �������, ��� ���� 2 ������ �������� 0.1 �������, ��� ���� 3 - 0.15 �������. ���� ���������� ��� OFILL, �� ��� �������� ���� 1 ���������� ��� �������-�����������, ��� �������� ���� 2 - ������ �������.

��� �������������� ��������� �������� ���� 1 ������� �� ������� �������. ��� ���� 2 ��� ������ ����� 0.1 �������. ��� 3 �������������, ��� ��������� ������ �������������� � �������. ���� ���������� ��� OFILL, �� ��� �������� ������ ���� ���������� ��� �������-�����������.

�������� ��� �������� �� ��� ������ ����� 0.05 �������. ���� ���������� ��� OFILL, �� ����� ������������ ���� ������-�����������.

����������� �������� ������� �� �������� ����� ����� � ������������� �������.

� ��������� ��������� ��� ���� ���� c_oflag ����� 0.

���� c_cflag ��������� ���������� �������������� ����� � ���������:
CBAUD0000017�������� ��������:
B00������������ �����.
B50000000150 ���.
B75000000275 ���.
B1100000003110 ���.
B1340000004134 ����.
B1500000005150 ���.
B2000000006200 ���.
B3000000007300 ���.
B6000000010600 ���.
B120000000111200 ���.
B180000000121800 ���.
B240000000132400 ���.
B480000000144800 ���.
B960000000159600 ���.
B19200000001619200 ���.
EXTA0000016������� A.
B38400000001738400 ���.
EXTB0000017������� B.
CSIZE0000060������ �������:
CS505 ���.
CS600000206 ���.
CS700000407 ���.
CS800000608 ���.
CSTOPB0000100�������� ��� ����-����, ����� ����.
CREAD0000200��������� ����� ��������.
PARENB0000400�������������� ��������.
PARODD0001000�������� �� ����������, ����� �� ��������.
HUPCL0002000������������ ����� ��� ��������� ��������.
CLOCAL0004000��������� ����� �����, ����� �������������.
RCV1EN0010000
XMT1EN0020000
LOBLK0040000����������� ����� ���������� shell'�.

���� CBAUD ���������� �������� �������� ������. ������� �������� ��������, B0, ������������ ��� ����������� ����� � ������������ �����. ��� ������� �������� �� ����� ������������ ������ ���������� ��������� � ��������� ������, ��� ������ ����� � ������� �����. ��� ������ ���� ���������� ������������ �� �������������� �� ��������� ��������.

���� CZISE ������ ������ ������� � ����� ��� ��� ��������, ��� � ��� ������ ������. � ���� ������� �� ����������� ��� ��������, ���� �� ����. ���� ���������� ����� CSTOPB, �� ������������ ��� ����-����, � ��������� ������ ����. ��������, ��� �������� 110 ��� ��������� ��� ����-����.

���� ���������� ����� PARENB, �� ��������� ��� �������� ��������, ��� � ���������� � ������� ������� ���� ��������. ���� ��� ���� ���������� ��� PARODD, ����������� �������� �� ����������, � ��������� ������ - �� ��������.

���� ���������� ��� CREAD, �� �������� ����� ������, � ��������� ������ ������� ����������� �� �����.

���� ���������� ��� HUPCL, �� ����� ����� ����� �����������, ����� ��������� �������, ����������� ��, ������� ����� ��� ����������. � ���������� ������ ���������� ��������� � ��������� ������ ��������.

���� ���������� ��� CLOCAL, �� ���������, ��� ����� ����� ���������, � ������ ����������� ��� ��������� ����������. � ��������� ������ �������������� �������� ����������.

���� ���������� ��� LOBLK, �� ����� ����������� shell'�, �� ���������� ��������, ����� �������������. � ��������� ������ ����� ������ ����������� ����� ��������������������.

����� �������� ������������� ����� ����� ����������� ��������� ���������� ��������������: B300, CS8, CREAD, HUPCL.

���� c_lflag ��������� termio ������������ ��� ����������� ������ ������ � ������������ ������. ������� ����� (0) ������������ ��������� �����������:
ISIG0000001��������� �������.
ICANON0000002������������ ���� (��������� ����� � �����������).
XCASE0000004������������ ������������� �������/����� ����.
ECHO0000010��������� ���.
ECHOE0000020���������� ������ ����� ��� ������: ������� �� ���, ������, ������� �� ���.
ECHOK0000040�������� ������� ������ ����� ������� �����������.
ECHONL0000100���������� ������� ������.
NOFLSH0000200��������� ����� ����� ���������� ��� ������.

���� ���������� ��� ISIG, �� ������ �������� ������ ������������ �� ������������ ������������ ��������� INTR, SWTCH � QUIT. � ������ ���������� ����������� ��������������� �������. ���� ��� ISIG �� ����������, �� ������� �������� �� ������������. ����� �������, ���������� ���������� ����������� ������� ����� �������� ������ ��� ������������� ���� ISIG. ��� ������� ����� ���� ��������� �� �����������, � ������� ����� ������������ ������� �� ������������� ��� ����������� �������� (��������, 0377).

���� ���������� ��� ICANON, �� ��������� ������������ ��������� �����. ��� �������� ���������� ������� �������������� [����� (ERASE) � ����������� (KILL)], �� �������� �������� �������� � ������, ����������� ��������� NL, EOF � EOL. ���� ��� ICANON �� ����������, �� ������� �� ������ ��������������� ����� �� ������� �����. ������ �� ������ �� ����� ������������ �� ��� ���, ���� �� �������� �� ������� ���� MIN �������� ��� �� ������� ����� �������� TIME ����� ������������� �������� (�� ���� ����� TIME �������� ������������� ����� ����������� ������� �������). ����� ������ ��������� ���������� ������ �� ����� ������� ���������� ����� � � �� �� ����� ��������� ������������ ����. ������� �������� TIME ���������� ��� ����������� ��������, �� ���� ������ �� ������ ����� ������������, ������ ����� �������� �� ������� ���� MIN ��������. �������� MIN � TIME �������� �������������� � �������� ��� �������� EOF � EOL (��. ���������� ���� <sys/termio.h>). ����� �������� � ������� ����� �������.

���� ����������� ���� XCASE � ICANON, �� ��� ����� ����� �������������� ��� �������, ����� ����� ��� ����� ������ \, � ��������� � ���� ���� ��������, ������ �� ������� ���� \. � ���� ������ ��������� ����������� ������������������ ������������ ��� ������ � �������������� ��� �����:
��� ����� �������:�����������:
`\'
|\!
~\^
{\(
}\)
\\\
��������, A �������� ��� \a, \n ��� \\n, � \N ��� \\\n.

���� ���������� ��� ECHO, �� ��� ��������� ������� ���������� ��� ��������������.

����� ���������� ��� ICANON, �������� ��������� ������� ��������������. ���� ����������� ���� ECHO � ECHOE, �� ������ ����� ������������ ��� ������ ASCII-�������� (BS, SP, BS), � ���������� ���� ��������� �� ��������� ����� ���� �������� �������� � ������. ���� ���������� ��� ECHOE, � ECHO ���, �� ������ ����� ������������ ��� ���� (SP BS). ���� ���������� ��� ECHOK, �� ����� ������� ����������� ����� ������� ������� ������ (NL), ����� ����������� ���� �����������. �������, ��� ������� ����� � ����������� ����� ���� ������������, ���� ����� ���� ��������� \, � ����� ��� ������ ����������� �����. ���� ���������� ��� ECHONL, �� ������� ������ ����� ������������ ���� � ��� ������, ����� �� ���������� ��� ECHO, ��� ������� ��� ���������� � ��������� ��������������� (��� ���������� ��������������). ������ ����� ����� (EOF) �� ������������, ���� ������ �� �� �����������. ��� ��� ��������������� ��������� ����� ����� ������ ASCII-������ EOT (����� ��������), �������������� ����� ����� ������� �� � ������������ ����� �����������, ����������� �� EOT.

���� ���������� ��� NOFLSH, �� �� ����� ����������� ������ ����������� ����� �������� ����� � ������ ��� ��������� �������� ������, ������������ � ����������.

� ��������� ��������� ��� ���� ���� c_lflag ����� 0.

�������� ��������� ������ ioctl(2) ��� ������������ ������ ����� ���:

     ioctl (fildes, command, arg)
     struct termio *arg;
�������� ��� ����� ��������� �������:
TCGETA
�������� ���������, ��������������� � ������ ���������� � ��������� �� � ��������� ���� termio, �� ������� ��������� �������� arg.
TCSETA
��������� ����������, ��������������� � ������ ����������, �������� �� ���������, �� ������� ��������� �������� arg.
TCSETAW
��������� ��������� ������, ������ ��� ������������� ����� ���������. ��� ����� ������� ��������� ��� ��������� ����������, �������� �� �����.
TCSETAF
��������� ��������� ������, ����� �������� ������� ����� � ���������� ����� ���������.
�������������� ������ ioctl(2) ����� ���:
     ioctl (fildes, command, arg)
     int arg;
���� ��� ����� ��������� �������:
TCSBRK
��������� ��������� ������; �����, ���� arg ����� ����, ������� ��������� ��������� (� ������� 0.25 ������� �������� ������� ����).
TCXONC
�����/������� ����������. ���� arg ����� ����, �� ������������� �����; ���� 1, �� ����������� ���������������� �����.
TCFLSH
���� arg ����� 0, �� �������� ������� �����; ���� 1, �� �������� ������� ������; ���� 2, �� �������� ��� �������.

�����

/dev/tty*
<sys/termio.h>

��. �����
stty(1) � ����������� ������������.
fork(2), ioctl(2), setpgrp(2), signal(2) � ����������� ������������.
Comments: [email protected]
Designed by Andrey Novikov
Copyright © CIT