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

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

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

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

Рис. 6.1. Копия экрана ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ audacity

ΠšΡ€ΠΎΠΌΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, Π³Π»Π°Π²Π½Ρ‹ΠΌ достоинством ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ вСсьма ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ ΠΈ СстСствСнный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ мСньшС прСпятствий ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ.

6.1.2. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -v ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ fetchmail

fetchmail β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°-шлюз. Π•Π΅ Π³Π»Π°Π²Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ являСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠΎΡ‡Ρ‚Ρ‹ POP3 ΠΈΠ»ΠΈ IMAP ΠΈ собствСнным ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ Internet SMTP для ΠΎΠ±ΠΌΠ΅Π½Π° ΠΏΠΎΡ‡Ρ‚ΠΎΠΉ. Он Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСн Π½Π° Unix-ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… нСпостоянныС SLIP- ΠΈΠ»ΠΈ PPP-ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Internet-ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π°ΠΌ, ΠΈ ΠΏΠΎ сущСству, вСроятно, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π½ΡƒΡŽ долю ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Internet.

Π’ fetchmail имССтся Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 60 ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ установлСно Π΄Π°Π»Π΅Π΅ Π² Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅, это слишком ΠΌΠ½ΠΎΠ³ΠΎ) ΠΈ большоС количСство Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², устанавливаСмых Π½Π΅ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Π° ΠΈΠ· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Π‘Ρ€Π΅Π΄ΠΈ этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ваТнСйшим являСтся -v, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ отобраТСния ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈ использовании ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° -v ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° fetchmail отправляСт Π½Π° стандартный Π²Ρ‹Π²ΠΎΠ΄ распСчатки POP-, IMAP- ΠΈ SMTP-Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ фактичСски ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄ выполнСния ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΌΠΈ сСрвСрами ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ транспортировки ΠΏΠΎΡ‡Ρ‚Ρ‹. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ распСчатки сСансов с ΠΎΡ‚Ρ‡Π΅Ρ‚Π°ΠΌΠΈ ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠΉ распСчатки сСанса (см. ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 6.1).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 6.1. РаспСчатка fetchmail -v

fetchmail: 6.1.0 querying hurkle.thyrsus.com (protocol IMAP)

 at Mon, 09 Dec 2002 08:41:37 -0500 (EST): poll started

fetchmail: running ssh %h /usr/sbin/imapd

 (host hurkle.thyrsus.com service imap)

fetchmail: IMAP< * PREAUTH [42.42.1.0] IMAP4rev1 v12.264 server ready

fetchmail: IMAP> A0001 CAPABILITY

fetchmail: IMAP< * CAPABILITY IMAP4 IMAP4REV1 NAMESPACE IDLE SCAN

 SORT MAILBOX-REFERRALS LOGIN-REFERRALS AUTH=LOGIN

 THREAD=ORDEREDSUBJECT

fetchmail: IMAP< A0001 OK CAPABILITY completed

fetchmail: IMAP> A0002 SELECT "INBOX"

fetchmail: IMAP< * 2 EXISTS

fetchmail: IMAP< * 1 RECENT

fetchmail: IMAP< * OK [UIDVALIDITY 1039260713] UID validity status

fetchmail: IMAP< * OK [UIDNEXT 23982] Predicted next UID

fetchmail: IMAP< * FLAGS (\Answered \Flagged \Deleted \Draft \Seen)

fetchmail: IMAP< * OK [PERMANENTFLAGS

 (\* \Answered \Flagged \Deleted \Draft \Seen)]

 Permanent flags

fetchmail: IMAP< * OK [UNSEEN 2] first unseen in /var/spool/mail/esr

fetchmail: IMAP< A0002 OK [READ-WRITE] SELECT completed

fetchmail: IMAP> A0003 EXPUNGE

fetchmail: IMAP< A0003 OK Mailbox checkpointed, no messages expunged

fetchmail: IMAP> A0004 SEARCH UNSEEN

fetchmail: IMAP< * SEARCH 2

fetchmail: IMAP< A0004 OK SEARCH completed

 2 messages (1 seen) for esr at hurkle.thyrsus.com.

fetchmail: IMAP> A0005 FETCH 1:2 RFC822.SIZE

fetchmail: IMAP< * 1 FETCH (RFC822.SIZE 2545)

fetchmail: IMAP< * 2 FETCH (RFC822.SIZE 8328)

fetchmail: IMAP< A0005 OK FETCH completed

 skipping message [email protected]:1 (2545 octets) not flushed

fetchmail: IMAP> A0006 FETCH 2 RFC822.HEADER

fetchmail: IMAP< * 2 FETCH (RFC822.HEADER {1586}

 reading message [email protected]:2 of 2 (1586 header octets)

fetchmail: SMTP< 220 snark.thyrsus.com ESMTP Sendmail 8.12.5/8.12.5;

 Mon, 9 Dec 2002 08:41:41 -0500

fetchmail: SMTP> EHLO localhost

fetchmail: SMTP< 250-snark.thyrsus.com

 Hello localhost [127.0.0.1], pleased to meet you

fetchmail: SMTP< 250-ENHANCEDSTATUSCODES

fetchmail: SMTP< 250-8BITMIME

fetchmail: SMTP< 250-SIZE

fetchmail: SMTP> MAIL FROM:< [email protected]> SIZE=8328

fetchmail: SMTP< 250 2.1.0 < [email protected]>... Sender ok

fetchmail: SMTP> RCPT TO:< [email protected]>

fetchmail: SMTP< 250 2.1.5 < [email protected]>... Recipient ok

fetchmail: SMTP> DATA

fetchmail: SMTP< 354 Enter mail, end with "." on a line by itself

#

fetchmail: IMAP< )

fetchmail: IMAP< A0006 OK FETCH completed

fetchmail: IMAP> A0007 FETCH 2 BODY.PEEK[TEXT]

fetchmail: IMAP< * 2 FETCH (BODY[TEXT] {6742}

 (6742 ΠΎΠΊΡ‚Π΅Ρ‚Π° Ρ‚Π΅Π»Π° сообщСния)

*********************.**************************.

*******************************.************************.*******

*********.

***********************.***************

fetchmail: IMAP< )

fetchmail: IMAP< A0007 OK FETCH completed

fetchmail: SMTP>. (EOM)

fetchmail: SMTP< 250 2.0.0 gB9ffWo08245 Message accepted for delivery

 flushed

fetchmail: IMAP> A0008 STORE 2 +FLAGS (\Seen \Deleted)

fetchmail: IMAP< * 2 FETCH (FLAGS (\Recent \Seen \Deleted))

fetchmail: IMAP< A0008 OK STORE completed

fetchmail: IMAP> A0009 EXPUNGE

fetchmail: IMAP< * 2 EXPUNGE

fetchmail: IMAP< * 1 EXISTS

fetchmail: IMAP< * 0 RECENT

fetchmail: IMAP< A0009 OK Expunged 1 messages

fetchmail: IMAP> A0010 LOGOUT

fetchmail: IMAP< * BYE hurkle IMAP4rev1 server terminating connection

fetchmail: IMAP< A0010 OK LOGOUT completed

fetchmail: 6.1.0 querying hurkle.thyrsus.com (protocol IMAP)

 at Mon, 09 Dec 2002 08:41:42 -0500: poll completed

fetchmail: SMTP> QUIT

fetchmail: SMTP< 221 2.0.0 snark.thyrsus.com closing connection

fetchmail: normal termination, status 0

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -v Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ fetchmail воспринимаСмой (прСдоставляя Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°). Π­Ρ‚ΠΎ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. Π― посчитал это Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ написал ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ для маскирования ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй Π² распСчатках Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… благодаря ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ -v, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎΠ±Ρ‹ распСчатки ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π±Π΅Π· нСобходимости рСдактирования сСкрСтной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π½ΠΈΡ….

Π­Ρ‚ΠΎ оказалось Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ сигналом. По ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ восСмь ΠΈΠ· дСсяти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, прСдставлСнных Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°Ρ…, Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ освСдомлСнными спСциалистами Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСкунд ΠΏΡ€ΠΈ просмотрС распСчаток сСансов. Π’ спискС рассылки fetchmail числится нСсколько Π·Π½Π°ΡŽΡ‰ΠΈΡ… людСй. По сущСству, Π²Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… сбоСв Π»Π΅Π³ΠΊΠΎ Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π°Π²Ρ‚ΠΎΡ€Ρƒ Ρ€Π΅Π΄ΠΊΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с Π½ΠΈΠΌΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ fetchmail ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»Π° Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ†ΠΈΡŽ "ΠΏΡƒΠ»Π΅Π½Π΅ΠΏΡ€ΠΎΠ±ΠΈΠ²Π°Π΅ΠΌΠΎΠΉ" ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΎΡ‚ΠΊΠ°Π·Ρ‹ происходят ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ. Π­Ρ‚ΠΎ Π½ΠΈΡ‡Ρ‚ΠΎ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ быстро ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ восьми ΠΈΠ· дСсяти ошибок.

Из Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠΊ: Π½Π΅ слСдуСт с ΠΎΠΏΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ инструмСнты ΠΈΠ»ΠΈ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ΅ срСдство. Они ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΊΠ½Π°ΠΌΠΈ Π² ΠΊΠΎΠ΄. НС достаточно просто "ΠΏΡ€ΠΎΠ±ΠΈΠ²Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠ±Ρ‹Π΅ отвСрстия Π² стСнах", ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ "ΠΎΡ‚Π΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΡΡ‚Π΅ΠΊΠ»ΡΡ‚ΡŒ". Если ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ сопровоТдаСмым, Ρ‚ΠΎ всСгда приходится "ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² Π½Π΅Π³ΠΎ свСт".

6.1.3. Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: GCC

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° GCC, GNU C-компилятор, примСняСмый Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ соврСмСнных Unix-систСм, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ дСмонстрируСт прСимущСства проСктирования с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ прозрачности. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° GCC ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ стадий ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, связанных вмСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°: стадии прСпроцСссора, синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π°, ассСмблСра ΠΈ Π»ΠΈΠ½ΠΊΠ΅Ρ€Π°.

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

Π­Ρ‚ΠΎ Π² точности структура cc, ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ (PDP-11) C-компилятора.

КСн Вомпсон.

БущСствуСт мноТСство прСимущСств Ρ‚Π°ΠΊΠΎΠΉ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. Одним ΠΈΠ· Π½ΠΈΡ… ΠΈ особСнно Π²Π°ΠΆΠ½Ρ‹ΠΌ для GCC являСтся Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎΠ΅ тСстированиС[59]. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² ΡΠ²Π»ΡΡŽΡ‚ΡΡ тСкстовыми, отклонСния ΠΎΡ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π² Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π½ΠΎΠΌ тСстировании Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простых тСкстовых diff-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ. НСт нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ срСдства Π΄Π°ΠΌΠΏ-Π°Π½Π°Π»ΠΈΠ·Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠΌΠ΅ΡŽΡ‚ собствСнныС ошибки, ΠΈ Π² любом случаС Π±ΡƒΠ΄ΡƒΡ‚ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ слоТности ΠΏΡ€ΠΈ обслуТивании.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ позволяСт ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ модСль проСктирования, которая Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠ²Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просто (Π½ΠΎ Π² достаточной стСпСни) ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΈ тСкстовых Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. Как ΠΈ Π² случаС с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ -v ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ fetchmail, подобная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ являСтся Π·Π°ΠΏΠΎΠ·Π΄Π°Π»ΠΎΠΉ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ, ΠΎΠ½Π° встроСна Π² ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Π΅Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΠΎΡΡ‚ΡŒ.