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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² срСдС Linux. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 148

Автор Майкл ДТонсон

87

Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ядрС Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅Π»ΠΊΠΎΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅ систСмныС полномочия.

88

Π€Π°ΠΉΠ» /etc/passwd обновляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ процСссами, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ Π½ΠΎΠ²ΡƒΡŽ копию Ρ„Π°ΠΉΠ»Π° с модификациями ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмного Π²Ρ‹Π·ΠΎΠ²Π° rename(). ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ такая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ являСтся Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎΠΉ, процСссы ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ· etc/passwd Π² любоС врСмя.

89

Ѐайловая систСма Andrew Filesystem (AFS), доступная Π² Linux, Π½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² стандартноС ядро, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ O_EXCL Π²ΠΎ всСй сСти.

90

Π­Ρ‚Π° ситуация Π±ΠΎΠ»Π΅Π΅ слоТна для ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². МногиС ядра ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Linux Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π·Π½Ρ‹Π΅ процСссы, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π» возникновСния ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ (Π° это Π½Π΅ совмСстимо со стандартной модСлью ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² POSIX). Linux ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΡƒΡŽ модСль ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ всСми ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса, Π½ΠΎ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ POSIX, Π° Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.

91

Π­Ρ‚Π° манипуляция Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ происходит Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎ β€” Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, какая Ρ‡Π°ΡΡ‚ΡŒ области Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π°.

92

Π­Ρ„Ρ„Π΅ΠΊΡ‚, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ fork() ΠΈ exec() Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ сущСствСнным ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ POSIX (Π°, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ lockf()) ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ flock() Π² BSD.

93

Одним ΠΈΠ· самых частых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π°Ρ€Π΅Π½Π΄Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ² являСтся Ρ„Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ сСрвСр Samba, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свои записи для увСличСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

94

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

95

Π―Π΄Ρ€Π° ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… вСрсий ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ноль Π»ΠΈΠ±ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Π΅ ядра всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ноль. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ случаС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

96

Если ΠΎΠ΄ΠΈΠ½ сигнал ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π°Ρ€Π΅Π½Π΄Ρ‹ мноТСства Ρ„Π°ΠΉΠ»ΠΎΠ², ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ сигнал являСтся сигналом Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ мноТСство событий Π°Ρ€Π΅Π½Π΄Ρ‹ ставятся Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ сигнал, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ события Π°Ρ€Π΅Π½Π΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

97

Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° O_NONBLOCK Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ Ρ„Π»Π°Π³ open(); Π² этом случаС возвращаСтся EWOULDBLOCK.

98

Они Ρ‚Π°ΠΊ ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ разбрасываСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ всСй памяти, Π° запись собираСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… областСй памяти. Они Ρ‚Π°ΠΊΠΆΠ΅ извСстны ΠΊΠ°ΠΊ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись. Π­Ρ‚ΠΈΠΌ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ "v" Π² ΠΊΠΎΠ½Ρ†Π΅ readv() ΠΈ writev().

99

Π­Ρ‚Π° эмулированная вСрсия Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ, Π½ΠΎ дСйствуСт Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ фактичСский систСмный Π²Ρ‹Π·ΠΎΠ², Ссли сигналы ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π²ΠΎ врСмя Π΅Π³ΠΎ выполнСния.

100

Π­Ρ‚ΠΎ Π²Π΅Ρ€Π½ΠΎ; PATH_MAX Π½Π΅ являСтся фактичСским ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠΌ. POSIX считаСт Π΅Π³ΠΎ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся эквивалСнтом "Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ".

101

Имя этого ΠΏΡƒΡ‚ΠΈ эквивалСнтно Π±ΠΎΠ»Π΅Π΅ простому /usr/bin/less.

102

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ftw() Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ stat() для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° для выяснСния, являСтся Π»ΠΈ ΠΎΠ½ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ, ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ Π²Ρ‹Π·ΠΎΠ²Ρƒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях избавляСт послСдний ΠΎΡ‚ нСобходимости ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ выполнСния stat() для Ρ„Π°ΠΉΠ»ΠΎΠ².

103

Π­Ρ‚ΠΎ Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для владСния Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ (Π³Π»Π°Π²Π° 13).

104

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

105

ΠžΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Π΅ процСссы, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сигналы, поэтому ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ.

106

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠ΅ΠΉ приостановки являСтся <Ctrl+Z>. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° stty позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ эту ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ это рассматриваСтся Π² Π³Π»Π°Π²Π΅ 16.

107

Π’ΠΎ Π΅ΡΡ‚ΡŒ устройства, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠ°ΠΊ для Π²Π²ΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΈ для Π²Ρ‹Π²ΠΎΠ΄Π°.

108

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Unix старого Ρ‚ΠΈΠΏΠ° прСдоставляли эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ TIOCSPGRP ioctl(), Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Linux. Для сравнСния, tcsetpgrp() ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ioctl(ttyfd, TIOCSPGRP, &pgrp).

109

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ сигналах ΠΈ ΠΈΡ… взаимодСйствии с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ заданиями рассказываСтся Π² Π³Π»Π°Π²Π΅ 12.

110

На man-страницС setserial описан способ ΠΎΠ±Ρ…ΠΎΠ΄Π° этого ограничСния, спСцифичСский для Linux.

111

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: "Π±ΠΈΡ‚ Π² сСкунду" ("Π±ΠΈΡ‚/с"), Π° Π½Π΅ "Π±ΠΎΠ΄". Π‘ΠΈΡ‚ Π² сСкунду опрСдСляСт ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π‘ΠΎΠ΄ являСтся тСхничСским Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌ смСны Ρ„Π°Π· Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ сСкунды. Π‘ΠΎΠ΄ Π½Π΅ соотвСтствуСт termios, Π½ΠΎ слово Π±ΠΎΠ΄, ΠΊ соТалСнию, ΠΏΠΎΠΏΠ°Π»ΠΎ Π² названия Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„Π»Π°Π³ΠΎΠ² termios, Π½Π΅ рассматриваСмых Π² этой ΠΊΠ½ΠΈΠ³Π΅.

112

НапримСр, прилоТСния настройки сСтСвых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ устройств tty.

113

B134 Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ равняСтся 134,5 Π±ΠΈΡ‚/с, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ IBM.

114

Linux Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ c_cflag для хранСния скорости, Π½ΠΎ Π½Π΅ стоит Π½Π° это ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ. ВмСсто этого примСняйтС cfsetospeed() ΠΈ cfstispeed().

115

Π―Π΄Ρ€Π° 2.6.x, рассматриваСмыС Π² настоящСй ΠΊΠ½ΠΈΠ³Π΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠ°ΠΊ Π²Π΅Ρ€ΡΠΈΡŽ 4, Ρ‚Π°ΠΊ ΠΈ Π²Π΅Ρ€ΡΠΈΡŽ 6 (Π½Π° послСднюю ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π½Π° IPv6 ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° TCP/IP).

116

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ сСти Π½Π° основС ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π°Ρ конструкция, сСти с ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΊΠ°Π½Π°Π»ΠΎΠ², Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹Π΅ соСдинСния. Однако ΠΎΠ½ΠΈ Π½Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… сСтСй.

117

Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ криптография ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»Π° Ρ‚Π°ΠΊΡƒΡŽ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΊΠ°ΠΊ появилась всСмирная ΡΠ΅Ρ‚ΡŒ Internet.

118

МногиС высокоуровнСвыС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ BOOTP ΠΈ NFS, построСны Π½Π° основС UDP.

119

Допустимы Π΅Ρ‰Π΅ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ Ρ€Π΅Π΄ΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

120

БистСмный Π²Ρ‹Π·ΠΎΠ² connect() ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ нСсколько TCP соСдинСний (ΠΎΠ½ позволяСт ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ выполняСтся процСсс синхронизации TCP). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² [33].

121

Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ select() ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ сокСт ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ для чтСния, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ accept() Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, Π΄Π°ΠΆΠ΅ Ссли сокСт Π½Π΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ. Для обСспСчСния максимальной пСрСносимости Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ select() Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для принятия соглашСний с Π½Π΅Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ сокСтами, хотя Π² систСмС Linux это фактичСски Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ этого ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² [33].

122

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ BSD Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΡƒΡŽ модСль повСдСния, Π² Ρ‚Π°ΠΊΠΈΡ… систСмах ошибки проходят Π±Π΅Π· ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ².

123

И для bind(), ΠΈ для connect() процСсс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ для ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ поиск ΠΏΡƒΡ‚Π΅Π²ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ (ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ стандартных Ρ„Π°ΠΉΠ»ΠΎΠ²).

124

Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· условий Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сСрвСрных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Однако ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… фактичСски созданы ΠΊΠ°ΠΊ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ сСрвСра. НапримСр, Web-сСрвСры, Π² основном, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ соСдинСниС Π·Π° Ρ€Π°Π· Ρ‡Π΅Ρ€Π΅Π· Π΄Π°Π½Π½Ρ‹ΠΉ процСсс. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ соСдинСниС нСскольким ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ, сСрвСр ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ мноТСства ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ созданиС Web-сСрвСра Π±ΠΎΠ»Π΅Π΅ простым. Если ошибка ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… процСссов, ΠΎΠ½Π° Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ клиСнтскоС соСдинСниС.

125