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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для UnixΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 51

Автор Π­Ρ€ΠΈΠΊ Π Π΅ΠΉΠΌΠΎΠ½Π΄

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ являСтся "особСнно Ρ‚ΡƒΠΌΠ°Π½Π½ΠΎΠΉ" ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ проСктирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ нСсколько ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ. МногиС программисты, прСвосходно Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΈΡˆΡƒΡ‚ Ρ†Π΅Π»Ρ‹Π΅ прилоТСния ΠΊΠ°ΠΊ массивныС однопроцСссныС ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€ΡƒΡˆΠ°ΡŽΡ‚ΡΡ ΠΏΠΎΠ΄ Ρ‚ΡΠΆΠ΅ΡΡ‚ΡŒΡŽ своСй собствСнной Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ слоТности.

Π’ Unix-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ "Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ" примСняСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ Π²ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΎΠ½ примСняСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ОсобоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ придаСтся ΠΌΠ΅Π»ΠΊΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ, соСдинСнным Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ мСТпроцСссного ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. БоотвСтствСнно, опСрационная систСма Unix ΠΏΠΎΠ±ΡƒΠΆΠ΄Π°Π΅Ρ‚ программистов Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ создаваСмыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π±ΠΎΠ»Π΅Π΅ простыС подпроцСссы ΠΈ ΡƒΠ΄Π΅Π»ΡΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ интСрфСйсам ΠΌΠ΅ΠΆΠ΄Ρƒ этими подпроцСссами. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ систСма обСспСчиваСт трСмя основными способами:

β€’ ΠΌΠ°Π»ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎΠ΅ созданиС подпроцСссов;

β€’ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами (Π²Ρ‹Π·ΠΎΠ²Ρ‹ с созданиСм ΠΏΠΎΠ΄ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΊΠ°Π½Π°Π»Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сообщСний ΠΈ сокСты);

β€’ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° простых, ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Ρ…, тСкстовых Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ посрСдством ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΈ сокСтов.

ΠœΠ°Π»ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎΠ΅ созданиС Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… процСссов ΠΈ простоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ процСссами ΡΠ²Π»ΡΡŽΡ‚ΡΡ вСсьма Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ для Unix-стиля программирования. Π’ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС, ΠΊΠ°ΠΊ VAX VMS, Π³Π΄Π΅ запуск процСссов являСтся Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅ΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ, программисты Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ массивныС ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, сСмСйство Unix отличаСтся Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π² сторону Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΡ… ΠΈΠ·Π΄Π΅Ρ€ΠΆΠ΅ΠΊ fork(2), Π° Π½Π΅ Π² сторону Π±ΠΎΠ»Π΅Π΅ высоких. Π’ частности, опСрационная систСма Linux особСнно эффСктивна Π² этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ, подпроцСссы ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π² Π½Π΅ΠΉ быстрСС, Ρ‡Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах[63].

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΏΠΎΠ΄Ρ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Unix-программистов ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ понятиями мноТСства Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… процСссов ΠΏΠΎ ΠΎΠΏΡ‹Ρ‚Ρƒ shell-программирования. ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ созданиС Π³Ρ€ΡƒΠΏΠΏ ΠΈΠ· мноТСства соСдинСнных ΠΊΠ°Π½Π°Π»Π°ΠΌΠΈ процСссов, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΌ ΠΈΠ»ΠΈ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ»ΠΈ с ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ использованиСм ΠΎΠ±ΠΎΠΈΡ… Ρ€Π΅ΠΆΠΈΠΌΠΎΠ².

Π’ ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ послСдствия ΠΌΠ°Π»ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ создания подпроцСссов, Π° Ρ‚Π°ΠΊΠΆΠ΅ описываСтся, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°Π½Π°Π»Ρ‹, сокСты ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ мСТпроцСссного взаимодСйствия (IPC), для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ процСссы. (Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ философия раздСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ примСняСтся ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ интСрфСйсов.)

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

Π’ Π³Π»Π°Π²Π΅ 5 рассматриваСтся самый Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ проСктирования β€” ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌΠΈ, Π³ΠΈΠ±ΠΊΠΈΠΌΠΈ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΡ‹ΠΌΠΈ. Однако эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Π±ΠΎΠ»Π΅Π΅ высокий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Π³Π»Π°Π²Π΅ 5 Π½Π΅ рассматривался, β€” это ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ стороны ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π°.

НС слоТно ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΡΡ‚ΠΈΠ»ΡŒ ΠΊ синтаксису ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня Ρ‚Π°ΠΊΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΠΊΠ°ΠΊ SMTP, BEEP ΠΈΠ»ΠΈ XML-RPC. РСальная ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π½Π΅ Π² синтаксисС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, Π° Π² Π΅Π³ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ являСтся достаточно Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ процСссов. ΠŸΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ свободным ΠΎΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹, ΠΏΡ‹Ρ‚Π°ΡŽΡ‰ΠΈΠ΅ΡΡ мыслСнно ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² обсуТдСнии Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ основноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠ΄Π΅Π»Π΅Π½ΠΎ Π²ΠΈΠ΄Π°ΠΌ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… программист свободно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° мСТпроцСссного взаимодСйствия.

7.1. ΠžΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠ΅ контроля слоТности ΠΎΡ‚ настройки ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π»ΠΎΠΆΠ½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ. Π’ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ обсуТдСниС Π½Π΅ касаСтся использования ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. РассмотрСниС этой ΠΈΠ΄Π΅ΠΈ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ сформулирована ясная структура, которая сводит ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, являСтся ΠΏΡ€Π΅ΠΆΠ΄Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‚.Π΅. ΠΊΠΎΡ€Π½Π΅ΠΌ всСх Π·ΠΎΠ» (дальнСйшСС обсуТдСниС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 12).

Π‘Π»ΠΈΠ·ΠΊΠΎΠΉ Π»ΠΎΠΆΠ½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы (threads) (Ρ‚.Π΅. мноТСство ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ выполняСмых процСссов, совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ΄Π½ΠΎ адрСсноС пространство памяти). ИспользованиС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов β€” срСдство ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚ основной Π»ΠΈΠ½ΠΈΠΈ обсуТдСния, данная ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассматриваСтся Π² ΠΊΠΎΠ½Ρ†Π΅ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹. Π—Π΄Π΅ΡΡŒ достаточно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅: ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы Π½Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π° скорСС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π΅Π΅, ΠΈ поэтому слСдуСт ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΈΡ… использования, ΠΊΡ€ΠΎΠΌΠ΅ случаСв ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ нСобходимости.

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, соблюдСниС ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ являСтся Π»ΠΎΠΆΠ½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ позволяСт ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ€Π°Π±ΠΎΡ‚Ρƒ программиста. ВсС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ для раздСлСния процСссов ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ для раздСлСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΎΡΡŒ Π² Π³Π»Π°Π²Π΅ 4.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ разбиСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ процСссы являСтся ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ бСзопасности. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Unix ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ Π²Π°ΠΆΠ½Ρ‹ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния бСзопасности систСмным рСсурсам, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠΉ доступ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ setuid[64]. Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой наимСньший элСмСнт ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ setuid-Π±ΠΈΡ‚. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, каТдая строка ΠΊΠΎΠ΄Π° Π² исполняСмом setuid-Ρ„Π°ΠΉΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ "Π±Π»Π°Π³ΠΎΠ½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ". (ВмСстС с Ρ‚Π΅ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠΎ написанныС setuid-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, сначала ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ дСйствия, Π° Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапах своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ½ΠΈΠΆΠ°ΡŽΡ‚ свои ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π΄ΠΎ уровня ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.)

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ setuid-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для выполнСния Сю ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Часто имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ процСссы: ΠΌΠ΅Π»ΠΊΠΈΠΉ, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΉ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ setuid, ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Π½Π΅ΠΉ Π½Π΅ нуТдаСтся. Если Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎ "Π±Π»Π°Π³ΠΎΠ½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ" Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ΄ Π² мСньшСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни благодаря ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌΡƒ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ ΠΈ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, опСрационная систСма Unix ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ большими достиТСниями Π² обСспСчСнии бСзопасности[65], Ρ‡Π΅ΠΌ Π΅Π΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Ρ‹.

7.2. ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ IPC-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Unix

Как ΠΈ Π² однопроцСссных структурах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ организация являСтся Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅ΠΉ. Π’ ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹ прСдставлСны IPC-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² порядкС возрастания слоТности ΠΈΡ… программирования. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ; слСдуСт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΈ эталонных тСстов ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ простыС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ Π½Π΅ подходят. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ часто ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ.

7.2.1. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π·Π°Π΄Π°Ρ‡ спСциализированным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ

Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ взаимодСйствия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, которая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° благодаря ΠΌΠ°Π»ΠΎΠ·Π°Ρ‚Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ созданию Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… процСссов, ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ спСциализированной Π·Π°Π΄Π°Ρ‡ΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ вызванная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° часто задаСтся ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Unix Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ² system(3), данная опСрация часто называСтся Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с созданиСм ΠΏΠΎΠ΄ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ (shelling out). ВызываСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° наслСдуСт ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ дисплССм ΠΈ выполняСтся Π΄ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Когда ΠΎΠ½Π° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° возобновляСт ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€ΠΎΠΉ ΠΈ дисплССм ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅[66]. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ обмСниваСтся Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с Π²Ρ‹Π·Π²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ послСднСй, конструкция ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Π½Π΅ являСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅ взаимодСйствия, ΠΊΡ€ΠΎΠΌΠ΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ случая, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ для измСнСния повСдСния Π²Ρ‹Π·Π²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

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