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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Linux ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 9

Автор ΠΡ€Π½ΠΎΠ»ΡŒΠ΄ Роббинс

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

1.4.5. Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообраТСния ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Β«GNU Coding StandardsΒ»

GNU Coding Standards являСтся стоящим для прочтСния Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС GNU, ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ GNU ΠΈΠ»ΠΈ просто Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ β€” Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС GNU ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π² сообщСствС Unix.

1.5. ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½Π°Ρ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ являСтся Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Бвятого Грааля; всСгда Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠΌ впослСдствии, Π½ΠΎ Π½Π΅ всСгда достиТимым ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π΅Π»Π΅Π³ΠΊΠΈΠΌ. Π•ΡΡ‚ΡŒ нСсколько аспСктов написания пСрСносимого ΠΊΠΎΠ΄Π°. GNU Coding Standards обсуТдаСт ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ…. Но Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ стороны. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π° высоком, Ρ‚Π°ΠΊ ΠΈ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ уровнях. ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°:

БоотвСтствуйтС стандартам

Π₯отя это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ напряТСния, знакомство с Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ стандартами языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, окупаСтся. Π’ частности, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° стандарты ISO 1990 ΠΈ 1999 Π³Π³. для Π‘ ΠΈ стандарт 2003 Π³. для Π‘++, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Linux создано Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· этих Π΄Π²ΡƒΡ… языков.

Π’ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ поддСрТиваСтся стандарт POSIX для интСрфСйса Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… ΠΈ систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², хотя ΠΎΠ½ ΠΈ большой. НаписаниС Π² соотвСтствии с POSIX Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡˆΠ°Π½ΡΡ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ пСрСноса вашСго ΠΊΠΎΠ΄Π° ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ систСмы, ΠΏΠΎΠΌΠΈΠΌΠΎ GNU/Linux. Π­Ρ‚ΠΎΡ‚ стандарт Π²ΠΏΠΎΠ»Π½Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»Π΅Π½; ΠΎΠ½ ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π² сСбС дСсятилСтия ΠΎΠΏΡ‹Ρ‚Π° ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ.

Π’Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π»ΡƒΡ‡ΡˆΠΈΠΉ интСрфСйс

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

Π˜Π·ΠΎΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ пСрСносимости Π·Π° Π½ΠΎΠ²Ρ‹ΠΌΠΈ интСрфСйсами

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

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ для конфигурирования Autoconf

По возмоТности ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ #ifdef. Если это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, скройтС Π΅Π³ΠΎ Π² Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ тСстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ #ifdef, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Autoconf.

1.6. РСкомСндуСмая Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

1. The Π‘ Programming Language, 2nd edition, by Brian W. Kernighan and Dennis M. Ritchie Prentice-Hall, Englewood Cliffs, New Jersey, USA, 1989. ISBN: 0-13-110370-9[25].

Π­Ρ‚ΠΎ «библия» Π‘, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Π²Π΅Ρ€ΡΠΈΡŽ стандарта Π‘ 1990 Π³. Π­Ρ‚ΠΎ довольно сТатая ΠΊΠ½ΠΈΠ³Π°, с большим количСством ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΉ Π² ΠΏΠΎΡ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСбольшоС число страниц. Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°; это стоит Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… усилий.

2. Π‘, A Reference Manual. 5th edition, by Samuel P. Harbison III and Guy L. Steele, Ji. Prentice-Hall, Upper Saddle River, New Jersey, USA, 2002. ISBN: 0-13-089592-X.

Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ классичСская ΠΊΠ½ΠΈΠ³Π°. Она ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π‘, Π° Ρ‚Π°ΠΊΠΆΠ΅ стандарты 1990 ΠΈ 1999 Π³Π³. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° соврСмСнна, ΠΎΠ½Π° слуТит Ρ†Π΅Π½Π½Ρ‹ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅. Она ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π² ΠΊΠ½ΠΈΠ³Π΅ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‡ΠΈ.

3. Notes on Programming in Π‘, by Rob Pike, February 21,1989 Доступна Ρ‡Π΅Ρ€Π΅Π· мноТСство Π²Π΅Π±-сайтов. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Π°Ρ‰Π΅ всСго ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΡ‹ΠΌ мСстом являСтся http://www.lysator.liu.se/c/pikestyle.html. (МногиС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ доступны Ρ‚Π°ΠΌ ΠΆΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Ρ‹ΡˆΠ΅: http://www.lysator.liu.se/с/.) Π ΠΎΠ± Пайк ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π² ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ†Π΅Π½Ρ‚Ρ€Π΅ Bell Labs, Π³Π΄Π΅ Π±Ρ‹Π»ΠΈ созданы Π‘ ΠΈ Unix, ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ» Ρ‚Π°ΠΌ изыскания. Π•Π³ΠΎ замСчания ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΠ»Π΅Ρ‚Π½ΠΈΠΉ ΠΎΠΏΡ‹Ρ‚ Π² Β«Ρ„ΠΈΠ»ΠΎΡΠΎΡ„ΠΈΡŽ ясности Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈΒ», это стоит прочтСния.

4. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ссылки Π½Π° http://www.chris-lott.org/resources/cstyle/. Π­Ρ‚ΠΎΡ‚ сайт Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ Π ΠΎΠ±Π° Пайка ΠΈ нСсколько статСй Π“Π΅Π½Ρ€ΠΈ БпСнсСра (Henry Spencer). ОсобСнно высокоС ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Β«Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ Π‘ ΠΈ стандарты программирования» (Recommended Π‘ Style and Coding Standards), ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ написанный Π½Π° сайтС Bell Labs Indian Hill.

1.7. РСзюмС

β€’ Β«Π€Π°ΠΉΠ»Ρ‹ ΠΈ процСссы» ΡΡƒΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚ ΠΌΠΈΡ€ΠΎΠ²ΠΎΠ·Π·Ρ€Π΅Π½ΠΈΠ΅ Linux/Unix. Π’Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠ°ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π±Π°ΠΉΡ‚ΠΎΠ², Π° устройств ΠΊΠ°ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈ использованиС стандартных Π²Π²ΠΎΠ΄Π°, Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ ошибки ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ построСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ модСль доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ. МодСль ΠΏΡ€Π°Π² доступа проста, Π½ΠΎ Π³ΠΈΠ±ΠΊΠ°, ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌΠ° ΠΊΠ°ΠΊ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ, Ρ‚Π°ΠΊ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌ.

β€’ ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ связанныС с Π½ΠΈΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π°Π² доступа, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

β€’ ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ стандартным Π‘ ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Π‘ являСтся использованиС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Π±ΠΎΠ»Π΅Π΅ строгой ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ². Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ программист Π½Π° Π‘ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ способСн ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΄, написанный Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ стилС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Новый ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ написан с использованиСм ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ².

β€’ GNU Coding Standards описываСт написаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ GNU. Она прСдусматриваСт многочислСнныС Ρ†Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ ΠΈ руководящиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ для создания Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ, ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Β«Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉΒ» являСтся, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, СдинствСнным Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ ΠΈΠ· Π½ΠΈΡ…. Π­Ρ‚ΠΎΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ для прочтСния ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌΠΈ программистами.

β€’ ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ являСтся слоТной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. РуководящиС указания ΠΈ инструмСнтарий ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚, Π½ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ счСтС Π½ΡƒΠΆΠ΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΎΠΏΡ‹Ρ‚.

УпраТнСния

1. ΠŸΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΠΈ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π ΠΈΡ‡Π°Ρ€Π΄Π° М. Π‘Ρ‚ΠΎΠ»ΠΌΠ΅Π½Π° Β«ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ GNUΒ» (Richard M. Stallman, Β«The GNU ProjectΒ»)[26], ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π² августС 1998 Π³.

Π“Π»Π°Π²Π° 2

АргумСнты, ΠΎΠΏΡ†ΠΈΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния

ΠŸΠ΅Ρ€Π²ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ любой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся интСрпрСтация ΠΎΠΏΡ†ΠΈΠΉ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Данная Π³Π»Π°Π²Π° рассматриваСт, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π‘ (ΠΈ Π‘++) ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ своСй ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, описываСт стандартныС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ для Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΎΠΏΡ†ΠΈΠΉ ΠΈ бросаСт взгляд Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния.

2.1. БоглашСния ΠΏΠΎ опциям ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ

Π£ слова Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΅ΡΡ‚ΡŒ Π΄Π²Π° значСния. Π‘ΠΎΠ»Π΅Π΅ тСхничСским ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ являСтся «всС 'слова' Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС». НапримСр:

$ ls main.с opts.с process.с

Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π» Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ «слова». ВсС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ слова сдСланы доступными ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π² качСствС Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²[27].

Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅: Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ всС слова ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Unix ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° раздСлитСлями (ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈΠ»ΠΈ символами TAB). ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ:

$ echo here are lots of spaces

here are lots of spaces /* ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Β«ΡΡŠΠ΅Π΄Π°Π΅Ρ‚Β» ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ */

$ echo "here are lots of spaces"

here are lots of spaces /* ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ */

ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ для Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹; echo Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚ символов Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. (Π’ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ; обсуТдСниС этих ΠΏΡ€Π°Π²ΠΈΠ» Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, которая фокусируСтся Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Π‘.)

АргумСнты ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π°Π»Π΅Π΅ Π½Π° ΠΎΠΏΡ†ΠΈΠΈ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π΄Π²ΡƒΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… всС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ: Ρ„Π°ΠΉΠ»Ρ‹ для ls ΠΈ простой тСкст для echo.

ΠžΠΏΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ каТдая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚. ΠžΠΏΡ†ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. По старому соглашСнию, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ (ΠΏΠΎΡ‡Ρ‚ΠΈ) всСгда ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ, ΠΎΠΏΡ†ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Ρ‡Π΅Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ (Ρ‚.Π΅. дСфиса, Π·Π½Π°Ρ‡ΠΊΠ° минус), ΠΈ состоят ΠΈΠ· СдинствСнной Π±ΡƒΠΊΠ²Ρ‹. АргумСнты ΠΎΠΏΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ для ΠΎΠΏΡ†ΠΈΠΈ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²-ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². НапримСр, опция -f ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ fgrep ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² качСствС списка строк для поиска». Π‘ΠΌ. рис 2.1.