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

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

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

52

НС слСдуСт ΠΏΡƒΡ‚Π°Ρ‚ΡŒ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅ΠΌΡƒΡŽ здСсь ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ конструкции с ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒΡŽ пиксСлСй, которая поддСрТиваСтся Π² PNG-изобраТСниях.

53

Одним ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΆΠΈΡ‚ΠΊΠΎΠ² этой ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Unix истории являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Internet-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π² качСствС ограничитСля строк ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ CR-LF вмСсто принятой Π² Unix LF.

54

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ RFC 3117: <ftp://ftp.frc-editor.org/in-notes/rfc3117.txt>.

55

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ RFC 3205: <http://www.faqs.org/rfcs/rfc3205.html>.

56

Π‘ΠΌ. RFC 2324 ΠΈ RFC 2325 Π½Π° страницах <http//www.ietf.org/rfc/rfc2324.txt> ΠΈ <http//www.ietf.org/rfc/rfс2325.txt> соотвСтствСнно.

57

КоллСга, мыслящий экономичСскими катСгориями, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚: "Π’ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΠΎΡΡ‚ΡŒ относится ΠΊ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡŽ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π±Π°Ρ€ΡŒΠ΅Ρ€ΠΎΠ², Π° ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ β€” ΠΊ ΡΠΎΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΡŽ стоимости ΠΆΠΈΠ·Π½ΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅".

58

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ядра Linux прСдпринимаСтся мноТСство ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ воспринимаСмости, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² Π°Ρ€Ρ…ΠΈΠ²Π΅ исходного ΠΊΠΎΠ΄Π° ядра ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… пособий Π½Π° Web-сайтах ΠΈ Π² ΠΊΠ½ΠΈΠ³Π°Ρ…. Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ измСняСтся ядро, прСпятствуСт этим ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°ΠΌ β€” докумСнтация хроничСски отстаСт.

59

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

60

ЀактичСски пСрСмСнная TERM устанавливаСтся систСмой Π²ΠΎ врСмя рСгистрации ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Для Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ² Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… линиях ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· tty-строк Π² значСния TERM, устанавливаСтся ΠΈΠ· систСмного ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ систСмы; Π΄Π΅Ρ‚Π°Π»ΠΈ вСсьма Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… Unix-систСмах. Эмуляторы Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ xterm(1), ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

61

Π Π°Π½Π½ΠΈΠΌ ΠΏΡ€Π΅Π΄ΠΊΠΎΠΌ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Unix Π±Ρ‹Π»Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° lint, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ C-ΠΊΠΎΠ΄Π°, обособлСнная ΠΎΡ‚ компилятора Π‘. Π₯отя GCC Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ²Π΅Ρ€ΠΆΠ΅Π½Ρ†Ρ‹ старой ΡˆΠΊΠΎΠ»Ρ‹ Unix Π΄ΠΎ сих ΠΏΠΎΡ€ склонны Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ процСсс запуска Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ "Π»ΠΈΠ½Ρ‚ΠΈΠ½Π³ΠΎΠΌ" (linting), Π° Π΅Π΅ имя ΡΠΎΡ…Ρ€Π°Π½ΠΈΠ»ΠΎΡΡŒ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, ΠΊΠ°ΠΊ xmllint.

62

Π˜Π½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹ΠΌ являСтся свойство конструкции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сохраняСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Π½Π΅ΠΌ. НапримСр, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½Ρ‹ΠΌ свойством являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄Π²Π΅ записи Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠ»ΡŽΡ‡. Π’ Π‘-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ строки, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ строковый Π±ΡƒΡ„Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ NUL-Π±Π°ΠΉΡ‚ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строковой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ систСмах ΠΈΠ½Π²Π΅Π½Ρ‚Π°Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΈ ΠΎΠ΄ΠΈΠ½ счСтчик частСй Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

63

Π‘ΠΌ. Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² "Improving Context Switching Performance of Idle Tasks under Linux" [1].

64

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

65

Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π»ΡƒΡ‡ΡˆΠΈΠ΅ достиТСния, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ Π² количСствС ΠΏΡ€ΠΎΡ€Ρ‹Π²ΠΎΠ² бСзопасности ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Internet.

66

РаспространСнная ошибка Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ с созданиСм ΠΏΠΎΠ΄ΠΎΠ±ΠΎΠ»ΠΎΡ‡Π΅ΠΊ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ программист Π·Π°Π±Ρ‹Π²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сигналы Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ процСссС ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌ подпроцСссС. Π‘Π΅Π· Ρ‚Π°ΠΊΠΎΠΉ прСдостороТности ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ подпроцСсса ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты для Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ процСсса.

67

По сути, это излишнСС ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация прСдставлСна ΠΏΡ€ΠΈ обсуТдСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… EDITOR ΠΈ VISUAL Π² Π³Π»Π°Π²Π΅ 10.

68

Π’ справочной страницС less(1) сказано, Ρ‡Ρ‚ΠΎ less ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Π° more.

69

РаспространСнная ошибка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² использовании вмСсто β€œ [email protected]” выраТСния $*. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ послСдствиям ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, содСрТащСго ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹.

70

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ Π²Π²ΠΎΠ΄ ΠΈ стандартный Π²Ρ‹Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ qmail-popup ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой сокСты, Π° стандартная ошибка (дСскриптор Ρ„Π°ΠΉΠ»Π° 2) отправляСтся Π² log-Ρ„Π°ΠΉΠ». ГарантируСтся, Ρ‡Ρ‚ΠΎ дСскриптор Ρ„Π°ΠΉΠ»Π° 3 Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ дСскриптором. Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ извСстном ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ ядру Π±Ρ‹Π»ΠΎ сказано: "Никто ΠΈ Π½Π΅ ΠΆΠ΄Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ это ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅".

71

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

72

ОсобСнно опасным Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ этой Π°Ρ‚Π°ΠΊΠΈ являСтся Π²Ρ…ΠΎΠ΄ Π² ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Unix-сокСт, Π³Π΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Π½Π°ΠΉΡ‚ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ».

73

"ΠšΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡ" (race condition) прСдставляСт собой класс ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ систСмы зависит ΠΎΡ‚ Π΄Π²ΡƒΡ… нСзависимых событий, происходящих Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС, ΠΎΠ΄Π½Π°ΠΊΠΎ отсутствуСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ фактичСскоС Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ этих событий. ΠšΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΡ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ появлСнию пСриодичСских ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трудности ΠΏΡ€ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅.

74

БрСдство STREAMS Π±Ρ‹Π»ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТным. ДСннису Π ΠΈΡ‚Ρ‡ΠΈ ΠΏΡ€ΠΈΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ высказываниС: "Π‘Π»ΠΎΠ²ΠΎ "streams" ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π΅Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Ссли Π΅Π³ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΠΈΡ‡Π°Ρ‚ΡŒ".

75

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ основного ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ с GNOME ΠΏΠ°ΠΊΠ΅Ρ‚Π° KDE Π²Π½Π°Ρ‡Π°Π»Π΅ использовали Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ CORBA, Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΎΡ‚ нСс Π² вСрсии 2.0. Π‘ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΎΠ½ΠΈ ΠΈΡ‰ΡƒΡ‚ Π±ΠΎΠ»Π΅Π΅ лСгковСсныС IPC-ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

76

ЛСс Π₯Π°Ρ‚Ρ‚ΠΎΠ½ Π² письмС, Π³Π΄Π΅ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Π΅Π³ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, Software Failure, сообщаСт: "Если для измСрСния плотности Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΎΠ² ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ выполняСмыС строки, Ρ‚ΠΎ ΠΏΠ»ΠΎΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΎΠ² Π² зависимости ΠΎΡ‚ языка ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π° порядок мСньшС плотности Π΄Π΅Ρ„Π΅ΠΊΡ‚ΠΎΠ² Π² зависимости ΠΎΡ‚ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π°".

77

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

78

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

79

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ POSIX для рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ [[:lower:]] ΠΈ [[:digit:]]. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ спСцифичСскиС срСдства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ символы-ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, Π½Π΅ описанныС здСсь. Однако для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² достаточно.

80

Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ являСтся Unix-программистом: инструмСнтарий X прСдставляСт собой Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, которая прСдоставляСт GUI-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ (Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ надписи, ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ мСню) ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΊ Π½Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм с графичСским интСрфСйсом прСдоставляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ инструмСнтарий, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ всСми. Unix ΠΈ сСрвСр X ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ нСсколько инструмСнтариСв. Π­Ρ‚ΠΎ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ раздСлСния ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² Π³Π»Π°Π²Π΅ 1 Π±Ρ‹Π»ΠΎ Π½Π°Π·Π²Π°Π½ΠΎ Ρ†Π΅Π»ΡŒΡŽ проСктирования X-сСрвСра. GTK ΠΈ Qt ΡΠ²Π»ΡΡŽΡ‚ΡΡ двумя Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярными X-инструмСнтариями с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ.

81

Однако Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ XSLT ΠΌΠΎΠ³ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ нСсколько ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΡ€ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностях, поэтому Π΅Π³ΠΎ нСльзя ΠΎΡ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠ»ΠΎΡ…ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ.