Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 85

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

β–‘Β 

CSTOPB
β€” устанавливаСт Π΄Π²Π° стоповых Π±ΠΈΡ‚Π° вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ;

β–‘Β 

HUPCL
β€” Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ линиями ΠΌΠΎΠ΄Π΅ΠΌΠ° ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ;

β–‘Β 

PARENB
β€” Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ чСтности;

β–‘Β 

PARODD
β€” примСняСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ нСчСтности вмСсто контроля чСтности.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Если Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ послСдний дСскриптор Ρ„Π°ΠΉΠ»Π°, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠΉΡΡ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», Π·Π°ΠΊΡ€Ρ‹Ρ‚ ΠΈ ΠΏΡ€ΠΈ этом Ρ„Π»Π°Π³

HUPCL
установлСн, ΠΎΠ½ устанавливаСт Π»ΠΈΠ½ΠΈΠΈ управлСния ΠΌΠΎΠ΄Π΅ΠΌΠ° Π² состояниС останова (hang-up).

Π Π΅ΠΆΠΈΠΌΡ‹ управлСния ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² основном ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊ ΠΌΠΎΠ΄Π΅ΠΌΡƒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ связи, хотя ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈ Π΄ΠΈΠ°Π»ΠΎΠ³Π΅ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π»Π΅Π³Ρ‡Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройку Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, Ρ‡Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ стандартноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΉ связи с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² управлСния структуры

termios
.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹

Π­Ρ‚ΠΈ Ρ€Π΅ΠΆΠΈΠΌΡ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ характСристиками Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, устанавливая Ρ„Π»Π°Π³ΠΈ элСмСнта

c_iflag
структуры
termios
с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… макросов:

β–‘Β 

ECHO
β€” Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ локальноС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… символов;

β–‘Β 

ECHOE
β€” выполняСт ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ
Backspace
,
Space
,
Backspace
ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ символа
ERASE
(ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ);

β–‘Β 

ECHOK
β€” стираСт строку ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ символа
KILL
;

β–‘Β 

ECHONL
β€” ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ символы ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку;

β–‘Β 

ICANON
β€” Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π²Π²ΠΎΠ΄Π° (см. тСкст, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ΠΌ);

β–‘Β 

IEXTEN
β€” Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, зависящиС ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ;

β–‘Β 

ISIG
β€” Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ сигналов;

β–‘Β 

NOFLSH
β€” ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡƒΡŽ запись ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ;

β–‘Β 

TOSTOP
β€” посылаСт сигнал Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΌ процСссам ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ записи.

Π”Π²Π° самых Π²Π°ΠΆΠ½Ρ‹Ρ… Ρ„Π»Π°Π³Π° Π² этой Π³Ρ€ΡƒΠΏΠΏΠ΅ β€”

ECHO
, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Π°Π²Π»ΡΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… символов, ΠΈ
ICANON
, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Π² ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡƒΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… символов. Если установлСн Ρ„Π»Π°Π³
ICANON
, говорится, Ρ‡Ρ‚ΠΎ строка Π² каноничСском Ρ€Π΅ΠΆΠΈΠΌΠ΅, Ссли Π½Π΅Ρ‚, Ρ‚ΠΎ строка Π² нСканоничСском Ρ€Π΅ΠΆΠΈΠΌΠ΅.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы β€” это коллСкция символов ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… символам ΠΎΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ клавиш <Ctrl>+<C>, Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡ…. Π’ элСмСнтС

c_cc
структуры
termios
содСрТатся символы, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ символа (Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€ Π² массивС) опрСдСляСтся макросом, Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ для ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… символов Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ.

Массив

c_cc
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ двумя ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами, зависящими ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, установлСн для Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° каноничСский Ρ€Π΅ΠΆΠΈΠΌ (Ρ‚.Π΅. установлСн Ρ„Π»Π°Π³
ICANON
Π² элСмСнтС
c_lflag
структуры
termios
) ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ… Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠ΅ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² элСмСнтов массива. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт ΡΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ значСния для этих Π΄Π²ΡƒΡ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ².

Для каноничСского Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ индСксы:

β–‘Β 

VEOF
β€” символ
EOF
;

β–‘Β 

VEOL
β€” Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ символ ΠΊΠΎΠ½Ρ†Π° строки
EOL
;

β–‘Β 

VERASE
β€” символ
ERASE
;

β–‘Β 

VINTR
β€” символ прСрывания
INTR
;

β–‘Β 

VKILL
β€” символ уничтоТСния
KILL
;

β–‘Β 

VQUIT
β€” символ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ
QUIT
;

β–‘Β 

VSUSP
β€” символ приостанова
SUSP
;

β–‘Β 

VSTART
β€” символ запуска
START
;

β–‘Β 

VSTOP
β€” символ останова
STOP
.

Для каноничСского Ρ€Π΅ΠΆΠΈΠΌΠ° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ индСксы:

β–‘Β 

VINTR
β€” символ
INTR
;

β–‘Β 

VMIN
β€” минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅
MIN
;

β–‘Β 

VQUIT
β€” символ
QUIT
;

β–‘Β 

VSUSP
β€” символ
SUSP
;

β–‘Β 

VTIME
β€” врСмя оТидания
TIME
;

β–‘Β 

VSTART
β€” символ
START
;

β–‘Β 

VSTOP
β€” символ
STOP
.

Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для Π±ΠΎΠ»Π΅Π΅ слоТной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… символов ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы ΠΈ нСканоничСскиС значСния ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹, ΠΌΡ‹ описываСм ΠΈΡ… Π² Ρ‚Π°Π±Π». 5.1.

Π’Π°Π±Π»ΠΈΡ†Π° 5.1

Бимвол ОписаниС
INTR
ЗаставляСт Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сигнал
SIGINT
процСссам, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρƒ. ΠœΡ‹ обсудим сигналы Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 11
QUIT
ЗаставляСт Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сигнал
SIGQUIT
процСссам, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρƒ
ERASE
ЗаставляСт Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ послСдний символ Π² строкС
KILL
ЗаставляСт Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всю строку
EOF
ЗаставляСт Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ всС символы строки Π²ΠΎ Π²Π²ΠΎΠ΄, считываСмый ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Если строка пустая, Π²Ρ‹Π·ΠΎΠ²
read
Π²Π΅Ρ€Π½Π΅Ρ‚ ноль символов, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ встрСтил Π½Π° ΠΊΠΎΠ½Π΅Ρ† Ρ„Π°ΠΉΠ»Π°
EOL
ДСйствуСт ΠΊΠ°ΠΊ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ строки Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΌΡƒ символу ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку
SUSP
ЗаставляСт Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ сигнал
SIGSUSP
процСссам, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΊ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρƒ. Если ваша систСма UNIX ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ заданиями, Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ приостановлСно
STOP
ДСйствуСт ΠΊΠ°ΠΊ "ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ°", Ρ‚. Π΅. ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ дальнСйший Π²Ρ‹Π²ΠΎΠ΄ Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π». ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ XON/XOFF ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ задаСтся ΠΊΠ°ΠΊ ASCII-символ
XOFF
(<Ctrl>+<S>)
START
ВозобновляСт Π²Ρ‹Π²ΠΎΠ΄ послС символа
STOP
, часто ASCII-символ
XON