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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Linux. ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 2

Автор ΠœΠ°Ρ€ΠΊ ΠœΠΈΡ‚Ρ‡Π΅Π»Π»

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

Π­Ρ‚Π° ΠΊΠ½ΠΈΠ³Π° Π½Π΅ являСтся ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌ руководством ΠΈΠ»ΠΈ справочником ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² GNU/Linux ΠœΡ‹ примСняСм ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π»Π°Π³Π°Π» самыС Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ ΠΈ приводя ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΡ… использования. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ 1.5, "Поиск Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ", ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Π³Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΊΠ½ΠΈΠ³Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ довольно слоТныС вопросы, ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с языком программирования Π‘ ΠΈ Π·Π½Π°ΡŽΡ‚, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка Π‘. Π­Ρ‚ΠΎΡ‚ язык являСтся основным срСдством Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния для GNU/Linux Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, описанных Π² ΠΊΠ½ΠΈΠ³Π΅. Π° Ρ‚Π°ΠΊΠΆΠ΅ большая Ρ‡Π°ΡΡ‚ΡŒ ядра Linux написаны Π½Π° Π‘.

ИзлоТСнная Π² ΠΊΠ½ΠΈΠ³Π΅ информация ΠΈ Ρ€Π°Π²Π½ΠΎΠΉ стСпСни ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ написанным Π½Π° C++, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ этот язык являСтся надмноТСством языка Π‘ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ языка Π‘ ΡΠ²Π»ΡΡŽΡ‚ΡΡ основным "срСдством общСния" Π² срСдС GNU/Linux.

Π’Π΅, ΠΊΡ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π² UNIX, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ функциями Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° (open(), read(), stat() ΠΈ Ρ‚.Π΄.). Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ стандартных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка Π‘ (fopen(), fprintf(), fscanf() ΠΈ Π΄Ρ€.). Оба сСмСйства Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ находят ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² GNU/Linux, поэтому ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ Π°ΠΊΡ†Π΅Π½Ρ‚ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΌ сСмСйствС. НизкоуровнСвыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ описаны Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π‘, "НизкоуровнСвый Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄".

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

БоглашСния, принятыС Π² ΠΊΠ½ΠΈΠ³Π΅

Π’ ΠΊΠ½ΠΈΠ³Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ типографскиС соглашСния.

β–  ΠΠΎΠ²Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ курсивом.

β–  Π’Сксты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, названия Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов "ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ языка" Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ printf("Hello, world!\n").

β–  Π˜ΠΌΠ΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄, Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Π½Ρ‹ ΠΌΠΎΠ½ΠΎΡˆΠΈΡ€ΠΈΠ½Π½Ρ‹ΠΌ ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ cd /.

β–  ΠšΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ взаимодСйствиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‚ΠΎ ставим Π² Π½Π°Ρ‡Π°Π»Π΅ строки ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ символ % (Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ систСмС вмСсто Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅). ВсС, Ρ‡Ρ‚ΠΎ находится Π΄Π°Π»Π΅Π΅ Π² этой строкС, вводится ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ строки β€” это рСакция систСмы. НапримСр, Π² Π΄ΠΈΠ°Π»ΠΎΠ³Π΅

% uname

Linux

систСма Π²Ρ‹Π΄Π°Π»Π° ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ %, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Π΅Π» ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ uname, Π° систСма ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»Π° Π²Ρ‹Π΄Π°Ρ‡Π΅ΠΉ строки Linux.

β–  Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ… ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ указываСтся имя исходного Ρ„Π°ΠΉΠ»Π° (Π² скобках). ВсС листинги ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠΎ адрСсу http://www.advancedlinuxprogramming.com.

ΠœΡ‹ писали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Red Hat Linux вСрсии 6.2. Π’ этот дистрибутив Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ядро Linux вСрсии 2.2.14, GNU-Π±Π½Π±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° языка Π‘ вСрсии 2.1.3 ΠΈ сСмСйство компиляторов EGCS вСрсии 1.1.2. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… вСрсиях Linux, Π² частности Π² ядрС вСрсии 2.4 ΠΈ с GNU-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ языка Π‘ вСрсии 2.2.

ΠžΡ‚ ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°

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

ΠœΡ‹ ΠΆΠ΄Π΅ΠΌ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ надССмся Π½Π° Π½ΠΈΡ…. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΠ»Π°Ρ‚ΡŒ элСктронноС письмо ΠΈΠ»ΠΈ просто ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ наш Web-сСрвСр, оставив свои замСчания, β€” ΠΎΠ΄Π½ΠΈΠΌ словом, Π»ΡŽΠ±Ρ‹ΠΌ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ для вас способом Π΄Π°ΠΉΡ‚Π΅ Π½Π°ΠΌ Π·Π½Π°Ρ‚ΡŒ, нравится ΠΈΠ»ΠΈ Π½Π΅Ρ‚ Π²Π°ΠΌ эта ΠΊΠ½ΠΈΠ³Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ выскаТитС своС ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ наши ΠΊΠ½ΠΈΠ³ΠΈ Π±ΠΎΠ»Π΅Π΅ подходящими для вас.

ΠŸΠΎΡΡ‹Π»Π°Ρ письмо ΠΈΠ»ΠΈ сообщСниС, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ Π΅Π΅ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ваш e-mail. ΠœΡ‹ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ознакомимся с вашим ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡ‡Ρ‚Π΅ΠΌ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‚Π±ΠΎΡ€Π΅ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ ΠΊ изданию ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΊΠ½ΠΈΠ³. Наши ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹:

E-mail: [email protected]

WWW http://www.williamspublishing.com

Π§Π°ΡΡ‚ΡŒ I

Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ вопросы программирования Π² срСдС UNIX/Linux

Π“Π»Π°Π²Π° 1

Начало

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

ΠŸΡ€ΠΈ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° всСй ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с языком программирования Π‘ ΠΈ C++ ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнными функциями стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ языка Π‘. ВСксты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² ΠΊΠ½ΠΈΠ³Π΅ написаны Π½Π° Π‘, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ случаСв, ΠΊΠΎΠ³Π΄Π° рассматриваСтся конкрСтная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ программирования Π½Π° C++. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ ΡƒΠΌΠ΅ΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ Linux, Π² частности ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹. Π’ связи с Ρ‚Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Linux-программисты Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ свой ΠΏΡƒΡ‚ΡŒ Π² срСдС Windows, ΠΌΡ‹ ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅ΠΌ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° сходства ΠΈ различия ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами.

1.1. Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Emacs

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

НСсколько слов о Emacs

Emacs β€” Π½Π΅Ρ‡Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большСС, Ρ‡Π΅ΠΌ просто Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ мощная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, работая Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ элСктронныС сообщСния. Бпособы настройки ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй ΡΡ‚ΠΎΠ»ΡŒ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ написания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ, Π½Π°Ρ…ΠΎΠ΄ΡΡΡŒ Π² Emacs, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Internet!

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΌΡ‹ Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ свободу Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΡˆΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. Ни ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΊΠ½ΠΈΠ³ΠΈ Π½Π΅ зависит ΠΎΡ‚ использования Emacs. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ нСбольшой Π²Π²ΠΎΠ΄Π½Ρ‹ΠΉ курс ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ‚Π΅Ρ… ΠΈΠ· вас, ΠΊΡ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅ успСл Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ свой Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Π² Linux.

1.1.1. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ исходного Ρ„Π°ΠΉΠ»Π° C/C++

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Emacs, Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ emacs Π² ΠΎΠΊΠ½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ <Enter>. ΠŸΠΎΡΠ²ΠΈΡ‚ΡΡ ΠΎΠΊΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ имССтся строка мСню. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² мСню Files, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Open Files ΠΈ Π½Π°Π±Π΅Ρ€ΠΈΡ‚Π΅ имя Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π² строкС "ΠΌΠΈΠ½ΠΈ-Π±ΡƒΡ„Π΅Ρ€Π°" Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части экрана.[2] ΠŸΡ€ΠΈ создании исходного Ρ„Π°ΠΉΠ»Π° Π½Π° языкС Π‘ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ .с ΠΈΠ»ΠΈ .h. Π’ случаС C++ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ .cpp, .hpp, .Π‘ ΠΈΠ»ΠΈ .H. Когда Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΉ тСкст ΠΈ сохранитС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π²Ρ‹Π±Ρ€Π°Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Save Buffer Π² мСню Files. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Exit Emacs Π² мСню Files.

Π’Π΅, ΠΊΡ‚ΠΎ ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‚ нСобходимости постоянно Ρ‰Π΅Π»ΠΊΠ°Ρ‚ΡŒ ΠΌΡ‹ΡˆΡŒΡŽ, ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π½Ρ‹ΠΌΠΈ сокращСниями, ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΈ сохранСниС Ρ„Π°ΠΉΠ»ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ открытия Ρ„Π°ΠΉΠ»Π° соотвСтствуСт сокращСниС C-x C-f. (Π—Π°ΠΏΠΈΡΡŒ C-x ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши <Control> с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ клавиши <x>.) Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ», Π²Π²Π΅Π΄ΠΈΡ‚Π΅ C-x C-s, Π° Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Emacs β€” C-x C-c. Π›ΡƒΡ‡ΡˆΠ΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ возмоТностях Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнного ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ°, доступного Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Emacs Tutorial Π² мСню Help. Π’ Π½Π΅ΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ мноТСство совСтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ эффСктивнСС Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Emacs.

1.1.2. АвтоматичСскоС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹, ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΡˆΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, оцСнят ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ Π² Emacs срСдства автоматичСского форматирования ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ исходного Ρ„Π°ΠΉΠ»Π°, написанного Π½Π° C/C++, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ опрСдСляСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π° Π½Π΅ просто тСкста. Если Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ <Tab> Π² пустой строкС, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ пСрСмСстит курсор Π² Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ строки. Когда клавиша <Tab> наТимаСтся Π² строкС, содСрТащСй ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ тСкст, сдвигаСтся вся строка. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ Π½Π°Π±Ρ€Π°Π½ Ρ‚Π°ΠΊΠΎΠΉ тСкст:

int main() {

printf("Hello, world\n");

}

НаТатиС клавиши <Tab> Π² строкС Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf() ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ:

int main() {

  printf("Hello, world\n");