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

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

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

Linux

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅

Одним ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… способов Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ являСтся Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ написанных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Данная ΠΊΠ½ΠΈΠ³Π° ΠΎΠ±ΡƒΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΌΡƒ API систСмных Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Linux β€” Ρ‚Π΅Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ядро любой Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” прСдставляя ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΈΠ·Π΄Π΅Π»ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь.

Рассматривая ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Linux API, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ (ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, пСрСносимости, устойчивости), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ написании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

Π₯отя ΠΊΠ½ΠΈΠ³Π° называСтся ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Linux Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, всС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ рассматриваСм, относится Ρ‚Π°ΠΊΠΆΠ΅ ΠΊ соврСмСнным систСмам Unix, Ссли Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠ΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«LinuxΒ» для обозначСния ядра Linux, a Β«GNU/LinuxΒ» для обозначСния всСй систСмы (ядра, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, инструмСнтов). Часто Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Β«LinuxΒ», ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅ΠΌ Π² Π²ΠΈΠ΄Ρƒ ΠΈ Linux, GNU/Linux ΠΈ Unix; Ссли Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ являСтся спСцифичным для Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ систСмы, ΠΌΡ‹ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅ΠΌ это явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Аудитория

Данная ΠΊΠ½ΠΈΠ³Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Π»ΠΈΡ†, Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… с основами Π‘, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ Π ΠΈΡ‡ΠΈ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° языкС Π‘. (ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρ‹ Java, ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ эту ΠΊΠ½ΠΈΠ³Ρƒ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² указатСлях Π‘, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π‘ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚.) Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ вСрсия Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ³ΠΎ Π‘ 1990 Π³ΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΈ ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Π‘.

Π’ частности, Π²Π°ΠΌ слСдуСт Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌΠΈ со всСми ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π‘, структурами управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ исполнСния, использованиСм объявлСний ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, функциями Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строками, использованиСм

exit()
ΠΈ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
<stdio.h>
для Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°.

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ стандартного Π²Π²ΠΎΠ΄Π°, стандартного Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ стандартной ошибки, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π½Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ всС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ массив ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строк, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с основными инструмСнтами ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ

cd
,
cp
,
date
,
ln
,
ls
,
man
(ΠΈ
info
, Ссли ΠΎΠ½ Ρƒ вас имССтся),
rmdir
ΠΈ
rm
, с использованиСм Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΎΠΏΡ†ΠΈΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния ΠΈ пСрСнаправлСния Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠ°Π½Π°Π»Ρ‹.

ΠœΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄ GNU/Linux, Π½ΠΎ ΠΈ Π½Π° мноТСствС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСм Unix. Π‘ этой Ρ†Π΅Π»ΡŒΡŽ ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ интСрфСйс с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π΅Π³ΠΎ доступности (лишь для систСм GLIBC ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² POSIX ΠΈ Ρ‚.Π΄.), Π° Π² тСкстС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ совСты ΠΏΠΎ пСрСносимости.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ здСсь приводится, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Ρ‡Π΅ΠΌ Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ использовали; это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. БистСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ основными ΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ высокого уровня ΠΈ поэтому ΠΎΠ½ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅. Π­Ρ‚ΠΎ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, опрСдСляСт использованиС Π½Π°ΠΌΠΈ Π‘: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ API Π±Ρ‹Π»ΠΈ спроСктированы для использования ΠΈΠ· Π‘, ΠΈ ΠΊΠΎΠ΄, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΈΡ… с языками Π±ΠΎΠ»Π΅Π΅ высокого уровня, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ C++ ΠΈ Java, Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈ вСроятнСС всСго, написанным Π½Π° Π‘. «Низкий ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒΒ» Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΠΏΠ»ΠΎΡ…ΠΎΠΉΒ», это просто Π·Π½Π°Ρ‡ΠΈΡ‚ Β«Π±ΠΎΠ»Π΅Π΅ ΡΡ‚ΠΈΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΒ».

Π§Ρ‚ΠΎ Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅

Данная ΠΊΠ½ΠΈΠ³Π° фокусируСтся Π½Π° Π±Π°Π·ΠΎΠ²Ρ‹Ρ… API, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΡ… ядро программирования ΠΏΠΎΠ΄ Linux:

β€’Β Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

β€’Β Π€Π°ΠΉΠ»ΠΎΠ²Ρ‹ΠΉ Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄

β€’Β ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²

β€’Β ΠŸΡ€ΠΎΡ†Π΅ΡΡΡ‹ ΠΈ сигналы

β€’Β ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹

β€’Β ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° программирования (сортировка, Π°Π½Π°Π»ΠΈΠ· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ‚.Π΄.)

β€’Β Π˜Π½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ

β€’Β ΠžΡ‚Π»Π°Π΄ΠΊΠ°

ΠœΡ‹ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ сохранили список Ρ‚Π΅ΠΌ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ. ΠœΡ‹ считаСм, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ «всСму, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒΒ», ΠΏΡƒΠ³Π°Π΅Ρ‚. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΊΠ½ΠΈΠΆΠΊΠΈ помСньшС, Π±ΠΎΠ»Π΅Π΅ сфокусированныС, ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Unix написаны Ρ‚Π°ΠΊΠΈΠΌ способом

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ вмСсто ΠΎΠ΄Π½ΠΎΠ³ΠΎ гигантского Ρ‚ΠΎΠΌΠ° ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌ нСсколько ΠΊΠ½ΠΈΠ³: ΠΎΠ΄Π½Ρƒ ΠΏΠΎ мСТпроцСссному Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ (IPC) ΠΈ сСтям, Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ пСрСносимости ΠΊΠΎΠ΄Π°. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ»ΠΈ Π³Π»Π°Π· Π° Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΠΌΠΎΠ² Π² сСрии ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Linux Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ графичСских интСрфСйсов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (GUI).

РассматриваСмыС Π½Π°ΠΌΠΈ API Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΊΠ°ΠΊ систСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹, Ρ‚Π°ΠΊ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π‘ ΠΎΠ±Π° Π²ΠΈΠ΄Π° Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² Π²ΠΈΠ΄Π΅ простых Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. БистСмный Π²Ρ‹Π·ΠΎΠ² являСтся нСпосрСдствСнным запросом систСмной слуТбы, Ρ‚Π°ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ запись Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ созданиС процСсса. БиблиотСчная функция, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ сСрвисы Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. БистСмныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 2 справочного руководства (ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ man), Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅Β 3.

НашСй Ρ†Π΅Π»ΡŒΡŽ являСтся Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ вас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Linux API Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…: Π² частности, посрСдством использования, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… исходных ΠΊΠΎΠ΄ΠΎΠ² Unix, Ρ‚Π°ΠΊ ΠΈ инструмСнтов GNU. К соТалСнию, самодостаточных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ написали большоС число Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… дСмонстрационных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π‘Ρ‹Π» сдСлан Π°ΠΊΡ†Π΅Π½Ρ‚ Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… программирования: особСнно Π½Π° Ρ‚Π°ΠΊΠΈΡ… аспСктах программирования для GNU, ΠΊΠ°ΠΊ Β«Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ инструмСнты GNU Π² нСзаурядныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Ρ‹Π±ΠΎΡ€ для изучСния повсСднСвных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹ΠΉ. Если Π²Ρ‹ ΡƒΠΆΠ΅ использовали GNU/Linux Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π²Ρ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠ°ΠΊ

ls
ΠΈ
cp
; послС этого просто ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ прямо Π² Ρ‚ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ тратя ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚.

Иногда ΠΌΡ‹ прСдставляСм ΠΊΠ°ΠΊ высокоуровнСвый, Ρ‚Π°ΠΊ ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ способы выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ стандарт интСрфСйса Π±ΠΎΠ»Π΅Π΅ высокого уровня рСализуСтся посрСдством Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ интСрфСйса ΠΈΠ»ΠΈ конструкции. ΠœΡ‹ надССмся, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ взгляд Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ происходит Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌΒ», ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚; для всСго ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ сами, Π½ΡƒΠΆΠ½ΠΎ всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ высокоуровнСвый, стандартный интСрфСйс.

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

НаконСц, каТдая Π³Π»Π°Π²Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ упраТнСниями. НСкоторыС ΠΈΠ· Π½ΠΈΡ… Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ»ΠΈ написания ΠΊΠΎΠ΄Π°. Π”Ρ€ΡƒΠ³ΠΈΠ΅ большС относятся ΠΊ катСгориям Β«ΠœΡ‹ΡΠ»Π΅Π½Π½Ρ‹Ρ… экспСримСнтов» ΠΈΠ»ΠΈ Β«ΠΊΠ°ΠΊ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, почСму…». ΠœΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈΡ… всС — ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

НСбольшой β€” Π·Π½Π°Ρ‡ΠΈΡ‚ красивый: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Unix

Π—Π°ΠΊΠΎΠ½ Π₯ΠΎΠ°Ρ€Π°: Β«Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ большой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΅ΡΡ‚ΡŒ ΡΡ‚Π°Ρ€Π°ΡŽΡ‰Π°ΡΡΡ ΠΏΡ€ΠΎΠ±ΠΈΡ‚ΡŒΡΡ малСнькая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Β»

- C.A.R. Hoare -

Π’Π½Π°Ρ‡Π°Π»Π΅ ΠΌΡ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒ Linux API, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ΄ инструмСнтов GNU. Однако, соврСмСнныС вСрсии Π΄Π°ΠΆΠ΅ простых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ

mv
ΠΈ
cp
) большиС ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅. Π­Ρ‚ΠΎ особСнно Π²Π΅Ρ€Π½ΠΎ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ GNU Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² стандартных ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ ΠΎΠΏΡ†ΠΈΠΈ, Π΄Π΅Π»Π°ΡŽΡ‚ всС, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ POSIX ΠΈ часто ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, внСшнС Π½Π΅ связанныС ΠΎΠΏΡ†ΠΈΠΈ (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π²Ρ‹Π²ΠΎΠ΄Π°).