Книга: Linux программирование в примерах

Сноски из книги

· #1

Это знаменитое высказывание было сделано на Международном симпозиуме по эффективному производству больших программ в Jablonna, Польша, 10-14 августа 1970 г. — Примеч. автора.

· #2

http://www.ansi.orgПримеч. автора.

· #3

http://www.iso.chПримеч. автора.

· #4

http://www.opengroup.orgПримеч. автора.

· #5

http://www.gnu.orgПримеч. автора.

· #6

Игра слов: free — свободный, бесплатный — Примеч. перев.

· #7

В оригинале: «Rome wasn't built in a day» — Примеч. перев.

· #8

См. справочные страницы csh(1) и tcsh(1) и книгу Using csh & tcsh, by Paul DuBois, O'Reilly & Associates. Sebastopol, CA. USA, 1995. ISBN 1-56592-132-1 — Примеч. автора.

· #9

Соответствующие справочные страницы можно посмотреть с помощью man 1 awk и man 3 printf — Примеч. науч. ред.

· #10

http://www.southern-storm.com.au/v7upgrade.htmlПримеч. автора.

· #11

Некоторые системы позволяют рядовым пользователям назначать владельцем их файла кого-нибудь еще, таким образом «отдавая его». Детали определяются стандартом POSIX, но они несколько запутаны. Обычная конфигурация GNU/Linux не допускает этого — Примеч. автора.

· #12

Конечно, владелец всегда может изменить права доступа. Большинство пользователей не отменяют для себя нрава на запись — Примеч. автора.

· #13

Для этого правила есть несколько редких исключений, но все они выходят за рамки данной книги — Примеч. автора.

· #14

Эта особенность впервые появилась в Multics, но Multics никогда широко не использовался — Примеч. автора.

· #15

Процесс может быть приостановлен, в этом случае он не «работающий»; но он и не завершён. В любом случае, на ранних этапах восхождения по кривой обучения не стоит быть слишком педантичным — Примеч. автора.

· #16

Так называемые переменные окружения — Примеч. науч. ред.

· #17

Между народный стандарт ISO/IEC 9899-1990 описывает разновидность языка С известную также как C89 или C90 — Примеч. науч. ред.

· #18

Стандарт C99 (ISO/IЕС 9899-1999) — Примеч. науч. ред.

· #19

Этот раздел адаптирован из статьи автора, который издавался в выпуске 16 Linux Journal (См. http://www.linuxjournal.com/article.php?sid=1135) Перепечатано и адаптировано по разрешению — Примеч. автора.

· #20

Это утверждение относится к ядру HURD, которое все еще находится в стадии разработки (в начале 2004 г.) Разработка на основе GCC и библиотеки GNU С (GLIBC) сегодня имеет место большей частью на Linux-системах — Примеч. автора.

· #21

Стиль расположения кода, рекомендуемый фондом свободного программного обеспечения (Free Software Foundation) — Примеч. науч. ред.

· #22

Эта ситуация имела место примерно в 1993 г; трюизм даже более очевиден сегодня, когда пользователи обрабатывают с помощью gawk гигабайты протокольных файлов — Примеч. автора.

· #23

Раздел 13.4, «Не могли бы вы произнести это для меня по буквам?», с. 521, дает обзор многобайтных символов и кодировок — Примеч. автора.

· #24

Механика проверки ошибок и сообщений о них обсуждаются в разделе 4.3, «Обнаружение неправильной работы» — Примеч. автора.

· #25

Русский перевод Брайан Керниган, Денис Ритчи. Язык программирования Си (изд. 3-е, исправленное) Санкт- Петербург. Невский диалект, 2001 — Примеч. науч. ред.

· #26

http://www.gnu.org/gnu/thegnuproject.htmlПримеч. автора.

· #27

Имя команды — ls в данном примере, так же доступно программе в качестве аргумента — Примеч. науч. ред.

· #28

См. /usr/src/cmd/echo.c в дистрибутиве V7 — Примеч. автора.

· #29

Когда мы спросили Джима Мейеринга (Jim Meyering), сопроводителя Coreulils, о наличии register в GNU Coreutils, он дал нам интересный ответ. Он удаляет эти слова при изменении кода, но в остальных случаях оставляет их на месте, чтобы облегчить интеграцию сделанных изменений с существующими версиями — Примеч. автора.

· #30

См. http://sources.redhat.comПримеч. автора.

· #31

http://plan9.bell-labs.com/magic/man2html/2/argПримеч. автора.

· #32

http://www.gnu.org/manual/glibc/html_node/Argp.htmlПримеч. автора.

· #33

http://256.com/sources/argvПримеч. автора.

· #34

http://autogen.sourceforge.net/autoopts.htmlПримеч. автора.

· #35

ftp://ftp.gnu.org/gnu/gengetopt/Примеч. автора.

· #36

http://nis-www.lanl.gov/~jt/Software/opt/opt-3.19.tar.gzПримеч. автора.

· #37

http://freshmeat.net/projects/popt/?topic_id=809Примеч. автора.

· #38

Существует также другое название для этой области данных — Неинициализированные данные — Примеч. науч. ред.

· #39

BSS означает 'Block Started by Symbol', мнемоника из ассемблера IBM 7094 — Примеч. автора.

· #40

Дамп ядра (core dump) является образом запущенного процесса в памяти, который создаётся при неожиданном завершении процесса. Позже этот дамп может быть использован для отладки Unix-системы, называют это файл core, а системы GNU/Linux — core.pid, где pid — ID потерпевшего крушения процесса — Примеч. автора.

· #41

Описание здесь намеренно упрощено. Запущенные программы занимают значительно больше места, чем указывает программа size, поскольку разделяемые библиотеки включены в адресное пространство. Также сегмент данных будет расти по мере выделения программной памяти — Примеч. автора.

· #42

Он получен от реальной практики работы с gawkПримеч. автора.

· #43

Этот код несет с собой аромат практического опыта, не удивительно было узнать, что более ранние версии просто проверяли наличие обратного слеша перед символом конца строки, пока кто-то не пожаловался, что он не работает, когда в конце строки есть несколько обратных слешей — Примеч. автора.

· #44

Эта функция завершает выполнение программы — Примеч. науч. ред.

· #45

alloca(3) — Примеч. науч. ред.

· #46

open() является одним из немногих варьирующих (variadic) системных вызовов — Примеч. автора.

· #47

См. /usr/src/cmd/cat.c в дистрибутиве V7. Программа без изменений компилируется для GNU/Linux. — Примеч. автора.

· #48

По крайней мере, три из этих блоков содержат данные, которые мы записали, другие для использования операционной системой при отслеживании размещения этих данных — Примеч. автора.

· #49

Да, это пишется так. Кена Томпсона (Ken Thompson), одного из двух «отцов» Unix, однажды спросили, что бы он сделал по-другому, если бы ему пришлось переделать Unix. Он ответил, что написал бы creat() с «e» на конце. И в самом деле, именно это он сделал для операционной системы Plan 9 From Bell LabsПримеч. автора.

· #50

Если у вас нет UPS и вы используете систему для критической работы, мы настоятельно рекомендуем вам обзавестись им. Следует также регулярно делать резервные копии. — Примеч. автора.

· #51

Состояние .гонки (race condition) является ситуацией, при которой детали временных соотношений могут вызывать непреднамеренные побочные эффекты или ошибки. В данном случае, каталог в течение короткого периода времени находится в противоречивом состоянии, и именно эта противоречивость и создаёт уязвимость — Примеч. автора.

· #52

Конечно, меняются служебные данные файла (число ссылок), но это не влияет ни на какой другой атрибут файла, также, как не влияет на содержимое файла. Обновление счетчика ссылок на файл является единственной операцией над файлом, при которой не проверяются права доступа к файлу — Примеч. автора.

· #53

См /usr/src/cmd/rmdir с в дистрибутиве V7 — Примеч. автора.

· #54

То есть прочитаны все элементы каталога — Примеч. науч. ред.

· #55

В системах GNU/Linux могут монтироваться файловые системы многих операционных систем, не относящихся к Unix. Во многих коммерческих системах Unix также можно смонтировать файловые системы MS-DOS. В таких случаях предположения относительно файловых систем Unix неприменимы — Примеч. автора.

· #56

Стоит внимательно подумать прежде чем использовать эти функции — Примеч. науч. ред.

· #57

Linux использует блочные устройства исключительно для дисков. Другие системы используют оба типа — Примеч. автора.

· #58

Именованные каналы и сокеты были разработаны независимо группами Unix System V и BSD соответственно. Когда системы Unix вновь сошлись, обе разновидности файлов стали доступными универсально —- Примеч. автора.

· #59

Технический термин warm fuzzyПримеч. автора.

· #60

Это утверждение было верно для V7, на современных системах больше нет таких гарантий — Примеч. автора.

· #61

Спасибо Джиму Мейерингу (Jim Meyering) за объяснение проблем — Примеч. автора.

· #62

UTC представляет собой независимое от языка сокращение для Coordinated Universal Time (универсальное скоординированное время). Старый код (а иногда и люди постарше) называют это Гринвичским временем (Greenwich Mean Time, GMT), которое является временем в Гринвиче, Великобритания. Когда стали широко использоваться часовые пояса, в качестве точки отсчета, относительно которого все остальные часовые пояса отсчитывались либо вперед, либо назад, был выбран Гринвич — Примеч. автора.

· #63

fchown() и fchmod() были введены в 4 2 BSD, но не включались в System V до выпуска 4 — Примеч. автора.

· #64

a.m. — от ante meridiem (до полудня), p.m. — от post meridiem (пополудни), американская система обозначения 12-часового цикла времени суток. — Примеч. перев.

· #65

Хотя POSIX стандартизует формат TZ, он не представляет интереса, поэтому мы не стали возиться здесь с его документированием. В конце концов, именно tzset() должна понимать формат, а не код пользователя. Реализации могут использовать и используют форматы, которые расширяют POSIX — Примеч. автора.

· #66

Вывод, показанный здесь, относится к US Eastern Standard Time. Вы получите различные результаты для одних и тех же программ и данных, если используете другой часовой пояс — Примеч. автора.

· #67

STL (Standard Template Library, стандартная библиотека шаблонов). — Примеч. науч. ред.

· #68

Заметным исключением является лишь Sun Solaris, где эти две функции существуют лишь в трудной для использования библиотеке совместимости с BSD — Примеч. автора.

· #69

Типичные сетевые базы данных включают Network Information Service (NIS) и NIS+ от Sun Microsystems, Kerberos (Hesiod), MacOS X NetInfo (версии вплоть до и включая 10.2) и LDAP, Lightweight Directory Access Protocol. Системы BSD хранят сведения в базах данных на диске и автоматически создают файлы /etc/passwd и /etc/groupПримеч. автора.

· #70

К сожалению, если производительность является проблемой, нет стандартных способов узнать, как ваша библиотека осуществляет работу, а на самом деле способ ее работы может варьировать во время исполнения! (См. справочную страницу nsswitchconf(5) в системе GNU/Linux.) С другой стороны, назначением API помимо всего прочего является сокрытие деталей — Примеч. автора.

· #71

Русский перевод Дональд E. Кнут. Искусство программирования Том 3. Сортировка и поиск (2-е издание). Москва • Санкт-Петербург • Киев, Вильямс, 2000 — Примеч. науч. ред.

· #72

http://www/gtk.orgПримеч. автора.

· #73

http://www.gnome.orgПримеч. автора.

· #74

http://www/gtk.org/rdpПримеч. автора.

· #75

В C++ это по-другому: там символьные константы действительно имеют тип char. Это различие не влияет на данный конкретный код — Примеч. автора.

· #76

GNU/Linux и Solaris дают возможность монтировать один файл поверх другого; это продвинутое использование, которое мы не будем обсуждать — Примеч. автора.

· #77

Например, при обновлении VAX 11/780 с 4.1 BSD до 4.2 BSD — Примеч. автора.

· #78

System V Release 3 поддерживала два различных размера блоков: 512 байтов и 1024 байта, но в остальном организация диска была той же самой — Примеч. автора.

· #79

Университет Карнеги-Меллона — Примеч. перев.

· #80

Источник: http://www.ife.ee.ethz.ch/music/software/sag/subsection2_5_4_3.htmlПримеч. автора.

· #81

Ha GNU/Linux и большинстве систем Solaris и некоторые системы на основе System V Release 4 используют /etc/vfstab, возможно, с другим форматом — Примеч. автора.

· #82

См. /usr/include/bits/statvfs.h на системе GNU/Linux — Примеч. автора.

· #83

На системах GNU/Linux и BSD для получения нижележащего дескриптора файла можно применить функцию dirfd() к указателю DIR*, см. справочную страницу GNU/Linux dirfd(3) — Примеч. автора.

· #84

POSIX стандартизировал ftw() для поддержки существующего кода, а GNU/Linux b коммерческие системы Unix продолжают её поддерживать. Однако, поскольку она недостаточно функциональна, мы не будем больше ее обсуждать. Если интересуетесь, см. ftw(3). — Примеч. автора.

· #85

У некоторых старых версий GLIBC были проблемы с FTW_CHDIR. Это не относится к GLIBC 2.3.2 и более поздним, и маловероятно, что вы столкнетесь с проблемами — Примеч. автора.

· #86

Мы не знаем, почему кому-нибудь может понадобиться делать такое изменение, но философия «что вы просили, то и получили» применяется и здесь! — Примеч. автора.

· #87

Хэш-таблица является структурой данных, позволяющей быстрое получение сохраненной информации, подробности выходят за рамки данной книги — Примеч. автора.

· #88

Fork (англ.) — «n вилка, развилка, v разветвлять, ответвлять» — Примеч. перев.

· #89

Такие процессы часто демонстрируют детское поведение. — Примеч. автора.

· #90

См. 9.1.4.3 Имена программ и argv[0]Примеч. науч. ред.

· #91

Мы это не придумываем. Терминология, конечно, не совсем правильна, но таким было чувство юмора разработчиков оригинальной Unix — Примеч. автора.

· #92

Дважды проверьте справочную страницу getrusage(2), если у вас более новое ядро, поскольку это поведение, возможно, изменилось — Примеч. автора.

· #93

csh и tcsh также могут быть включены в эту категорию, но мы предпочитаем оболочки в стиле оболочки Борна — Примеч. автора.

· #94

Такая операция часто обозначается no-op — «no operation» (нет операции) — Примеч. автора.

· #95

Мы уверены, что вы не волновались. В конце концов, вы, возможно, используете конвейеры из оболочки десятки раз в день — Примеч. автора.

· #96

Что они ели на обед, остается не указанным. — Примеч. автора.

· #97

FIFO означает «first in, first out» — «первым вошел, первым вышел». Так работают каналы. — Примеч. автора.

· #98

На системах GNU/Linux /dev/fd является символической ссылкой на /proc/self/fd, но поскольку /dev/fd является общеизвестным, в своем коде следует использовать именно его — Примеч. автора.

· #99

Хотя мы показали простые команды, допустимы произвольные конвейеры — Примеч. автора.

· #100

Стандарт POSIX умышленно не приписывает ей значение. Однако, чтобы старый код продолжал работать, единственным значением, которое могла бы разумно использовать любая реализация, является 1 — Примеч. автора.

· #101

Ну, мы игнорируем мысль, что два супруга могли бы хотеть поговорить друг с другом и насладиться компанией — Примеч. автора.

· #102

В одно и то же время есть только один сопроцесс по умолчанию (доступный посредством 'read -p' и 'print -p'). Сценарии оболочки могут использовать команду exec со специальной записью перенаправления для назначения дескрипторов файла сопроцесса определенным номерам. После этого можно запустить другой сопроцесс — Примеч. автора.

· #103

Очевидно, вы можете их закрыть. Но если вы не знаете, что они открыты, они теряются с таким же успехом, как и память через утечку памяти — Примеч. автора.

· #104

Игра слов kill-overkill (избыточно — overkill) — Примеч. перев.

· #105

По крайней мере один поставщик дистрибутивов GNU/Linux отменяет сознание файлов core «с иголочки». Для повторного подключения этой возможности поместите в свой файл ~/.profile строку 'ulimit -S -с unlimited' — Примеч. автора.

· #106

Handler (англ.) — обработчик — Примеч. перев.

· #107

Изменение поведения было плохой мыслью, сильно критиковавшейся в свое время, но было слишком поздно. Изменение семантики определенного интерфейса всегда ведет к проблеме, как было в этом случае. Хотя это особенно относится к проектировщикам операционных систем, любой, кто разрабатывает библиотеки общего назначения, также должен помнить этот урок. — Примеч. автора.

· #108

Хотя мы описываем read(), эти правила применяются ко всем системным вызовам, которые могут завершиться с ошибкой EINTR, как, например, семейство функций wait()Примеч. автора.

· #109

Для использования API требуется компоновка с отдельной библиотекой, — ljobsПримеч. автора.

· #110

Насколько мы смогли определить, имена SA_NOMASK и SA_ONESHOT являются специфическими для GNU/Linux. Если кому-нибудь известно иное, пожалуйста, сообщите нам!

· #111

Наша благодарность Ульриху Дрепперу (Ulrich Drepper) за помощь в разъяснении, связанных с этим проблем — Примеч. автора.

· #112

Исторически системы BSD использовали имя SIGCHLD, которое используется и POSIX. В System V есть сходный сигнал с именем SIGCLD. GNU/Linux определяет последний через #define как первый — см. табл. 10.1 — Примеч. автора.

· #113

Возможно, лучшим именем для функции было бы child_at_school() [ребенок_в_школе] — Примеч. автора.

· #114

MacOS X и Windows XP обе являются многопользовательскими системами, но это довольно недавние разработки — Примеч. автора.

· #115

Хотя в Соединенных Штатах нет официальных удостоверений личности, во многих странах они имеются — Примеч. автора.

· #116

Денис Ричи (Dennis Ritchie), создатель С и соавтор Unix, получил патент для бита setuid: Protection of Data File Contents (Защита содержимого файла данных), номер патента США 4135240. См. http://www.delphion.com/details?pn=US04135240__, а также http://www.uspco.gov. AT&T передала патент общественности, разрешив всем использовать свою технологию — Примеч. автора.

· #117

Безопасность для систем GNU/Linux и Unix является глубокой темой сама по себе. Это просто пример. см. раздел 11.9 «Рекомендуемая литература» — Примеч. автора.

· #118

Одной из программ, разработанных с этой целью, является GNU userv (ftp://ftp.gnu.org/gnu/userv/) — Примеч. автора.

· #119

На ум приходят образы счастливых юных программ их лица и руки, запачканные шоколадом — Примеч. автора.

· #120

E (Effective) эффективный ID, R (Real) действительный ID и S (Saved) сохраненный ID — Примеч. науч. ред.

· #121

Однако, в своей лекции в честь присуждения премии Тьюринга Ассоциации по вычислительной технике в 1981 г. д-р Хоар утверждает, что эту идею выдвинул сам Алан Тьюринг — Примеч. автора.

· #122

Как упоминалось в разделе 10.2 «Действия сигналов», некоторые дистрибутивы GNU/Linux запрещают создание файлов core. Чтобы снова разрешить их, поместите в свой файл ~/.profile строку 'ulimit -S -с unlimited' — Примеч. автора.

· #123

Hints On Programming Language Design, C.A.R. Hoare Stanford University Computer Science Technical Report CS-73-403 (ftp://reports.stanford.edu/pub/cstr/reports/cs/tr/73/403/CS-TR-73-403.pdf). December, 1973 — Примеч. автора.

· #124

См. (1). wc подсчитывает строки, слова и символы — Примеч. автора.

· #125

Такое использование /dev/shm на самом деле является злоупотреблением,, он предназначен для использования в реализации разделяемой памяти, а не в качестве электронного диска. Тем не менее, это полезно для иллюстрации нашей мысли — Примеч. автора.

· #126

На нашей системе 512 мегабайтов оперативной памяти, что для старых чудаков вроде автора кажется порядочным. Однако цены на память упали, и вполне обычны системы с одним или более гигабайтами оперативной памяти, по крайней мере, для разработчиков программного обеспечения — Примеч. автора.

· #127

Пространство для подкачки состоит из одного или более выделенных участков диска, используемых для хранения частей исполняющегося процесса, который не находится в настоящее время в памяти — Примеч. автора.

· #128

Такая утечка была у нас в gawk К счастью, она исправлена — Примеч. автора.

· #129

Numerical Recipes in С. The Art of Scientific Computing,, 2nd edition, by William H. Press, Brian P. Plannery, Saul A. Teukolsky, and William T. Vetterling. Cambridge University Press, USA, 1993, ISBN 0-521-43108-5 — Примеч. автора.

· #130

См /usr/source/s1/glob.c в дистрибутиве V6

· #131

http://www.cs.bell-labs.com/cm/cs/pearls/Примеч. автора.

· #132

Русский перевод: Дональд E. Кнут. Искусство программирования. Том 2. Получисленные алгоритмы (3-е издание). Москва - Санкт-Петербург - Киев. Вильямс. 2000 — Примеч. науч. ред.

· #133

http://www-cs-faculty.stanford.edu/~knuth/taocp.htmlПримеч. автора.

· #134

Русский перевод — Дж. Фридл. Регулярные выражения (2-е издание). C.-Петербург, Питер, 2003 — Прим. науч. ред.

· #135

http://www.gnu.org/software/grep/doc/grep.htmlПримеч. автора.

· #136

От английских слов i(nternationalizatio)n и l(ocalizatio)n —Примеч. перев.

· #137

NLS — native language support — Примеч. перев.

· #138

Существует более ранний дизайн, известный как catgets(). Хотя он стандартизован POSIX, его гораздо сложнее использовать, и мы его не рекомендуем — Примеч. автора.

· #139

Программисты, долгое время работавшие на С и Unix, могут предпочесть использовать локаль 'С', даже если их родной язык английский, английские локали дают другой результат по сравнению с тем, что ожидают эти седые, понюхавшие пороху ветераны Unix — Примеч. автора.

· #140

Мы так же счастливы, как и вы, поскольку нам не нужно представлять код, использующий эту полнофункциональную структуру — Примеч. автора.

· #141

В стандарте используется технический термин radix point (позиционный разделитель), поскольку числа с другим основанием счисления также могут иметь дробные части. Однако, для денежных значений можно довольно безопасно использовать термин 'decimal point' (десятичный разделитель) — Примеч. автора.

· #142

Нам, вероятно, следовало выбрать более осмысленные имена вместо простых ii и jj, поскольку использующий их код короткий, отсутствие у нас воображения не представляет значительной проблемы — Примеч. автора.

· #143

Это устанавливается механизмом Autoconf и Automake. Autoconf и Automake являются мощными программными наборами, дающими возможность поддержки широкого круга Unix-систем систематическим образом — Примеч. автора.

· #144

Хотя американцы часто ссылаются на эры определенных президентов, они не являются частью национального календаря в том же смысле, как в Японии до Второй мировой войны или в докоммунистическом Китае — Примеч. автора.

· #145

Подробности приведены в документации GNU gettext. Здесь мы концентрируемся на потребностях разработчика, а не переводчика — Примеч. автора.

· #146

Этот макрос обычно определяется автоматически программой configure, либо в специальном заголовке, либо в командной строке компилятора configure создается с помощью Autoconf и Automake — Примеч. автора.

· #147

Pig — свинья, поросенок (англ.) — Примеч. перев.

· #148

Мы тщетно потратили 30 или 45 минут, пытаясь использовать каталог piglat/LC_MESSAGES и установку LC_ALL=piglat' без всякого успеха, пока не выяснили это — Примеч. автора.

· #149

ftp://ftp.gnu.org/gnu/gettextПримеч. автора.

· #150

http://www.unicode.orgПримеч. автора.

· #151

GNU/Linux ее поддерживает, но лишь для совместимости — Примеч. автора.

· #152

Справочная страница GNU/Linux fcntl(3) указывает, что этих сведений может быть недостаточно, процесс может находиться на другой машине! При блокировках по сети есть и другие проблемы, в общем, использование блокировки в файловых системах, смонтированных для удаленных компьютеров, не является удачной мыслью — Примеч. автора.

· #153

В системе GNU/Linux lockf() реализована в виде «оболочки» вокруг fcntl()Примеч. автора.

· #154

Тупик (deadlock) является ситуацией, при которой оба процесса блокируются, причем каждый из них ждёт, пока другой освободит определенный ресурс — Примеч. автора.

· #155

Удачно, что название flock() отличается от lockf(), поскольку их семантика различна. Это также страшно сбивает с толку. Держите свое руководство под рукой. — Примеч. автора.

· #156

В справочной странице gettimeofday(2) документирована соответствующая функция settimeofday() для использования суперпользователем (root) для установки времени дня всей системы — Примеч. автора.

· #157

К сожалению, по-видимому, в настоящее время нет стандарта для названий членов struct stat, что делает такую операцию непереносимой — Примеч. автора.

· #158

Корректное выполнение профилировки нетривиальная задача, если вы думаете о написании интерпретатора, стоит сначала провести свои исследования — Примеч. автора.

· #159

В голову приходят образы, как маленькие двоичные структуры данных сидят друг рядом с другом за чаем и пирожными. По крайней мере, такое бывает, если вы проводите слишком много времени перед своим компьютером. — Примеч. автора.

· #160

Этот вывод для часового пояса U.S. Eastern Time zone — Примеч. автора.

· #161

Оптимизации компилятора являются общеизвестным козлом отпущения для логических ошибок. В прошлом обвинения компиляторов были более оправданы. Судя по нашему опыту, используя современные системы и компиляторы, очень редко можно обнаружить случаи, в которых оптимизации компилятора привносят ошибки в работающий код — Примеч. автора.

· #162

Мы говорим об оригинальном BSD dbx. В течение десяти лет мы использовали исключительно GDB — Примеч. автора.

· #163

ddd поставляется со многими системами GNU/Linux. Исходный код доступен на FTP-сайте проекта GNU ddd(ftp://ftp.gnu.org/gnu/ddd/) — Примеч. автора.

· #164

http.//sources.redhat.com/insight/ — Примеч. автора.

· #165

ftp://ftp.gnu.org/gnu/gdb/Примеч. автора.

· #166

http://www.gnu.orgПримеч. автора.

· #167

Если вы хотите изменить такое поведение, см. sysctl(8) — Примеч. автора.

· #168

Примерно 213?275 мм — Примеч. перев.

· #169

Bjarne Stroustrup, создатель С++, настойчиво работал над тем, чтобы сделать использование препроцессора С совершенно ненужным в С++. По нашему мнению, он не вполне добился успеха: #include нужен до сих пор, но не обычные макросы. Для С препроцессор остается ценным и инструментом, но он должен использоваться благоразумно — Примеч. автора.

· #170

Серьезно! Часто люди пропускают через gawk мегабайты данных. Помните, никаких произвольных ограничений! — Примеч. автора.

· #171

Мы унаследовали эту схему. В общем, она работает, но все же есть проблемы. Целью данного раздела является передача накопленного нами в ходе работы с объединениями опыта — Примеч. автора.

· #172

Опять-таки, GCC 3.1 или более новый и GDB 5 дают возможность непосредственного использования макросов, но только лишь если вы используете их совместно, с определенными опциями. Это было описано ранее в разделе 15.4.1.2 «По возможности избегайте макросов с выражениями». — Примеч. автора.

· #173

Эта часть кода была с тех пор пересмотрена, поэтому там больше нет этих строк из примера. — Примеч. автора.

· #174

Переписав код управления буфером! — Примеч. автора.

· #175

ftp://ftp.ninemoons.corn/pub/dbug/Примеч. автора.

· #176

В C99, который допускает смешивание объявлений переменных с исполняемым кодом, это составляет меньшую проблему, но помните, что этот пакет был разработан для K&R С — Примеч. автора.

· #177

Хотя нам следовало бы усвоить свой урок после первой компании, мы перешли ко второй. С тех пор, как мы это выяснили, мы обычно избегаем начинающие компании. Ваша выгода, конечно, может меняться — Примеч. автора.

· #178

ftp://ftp.perens.com/pub/ElectricFenceПримеч. автора.

· #179

GDB также позволяет определить переменную окружения LD_PRELOAD: set environment LD_PRELOAD=PATH_TO_YOUR_LIBRARY — Примеч. науч. ред.

· #180

http://www.dmalloc.comПримеч. автора.

· #181

Все в большей степени для разработки высококачественных продуктов используется также GNU/Linux! — Примеч. автора.

· #182

http://www.winehq.comПримеч. автора.

· #183

http://valgrind.kde.orgПримеч. автора.

· #184

http://www.linuxjournal.com/article.php?sid=6059Примеч. автора.

· #185

http://www.linuxjournal.com/article.php?sid=6556Примеч. автора.

· #186

http://www.splint.orgПримеч. автора.

· #187

http://www.debuggingrules.comПримеч. автора.

· #188

http://www.amacombooks.orgПримеч. автора.

· #189

http://www.cs.bell-labs.com/cm/cs/pearls/Примеч. автора.

· #190

Русский перевод Брайан Керниган, Роб Пайк. UNIX: Программное окружение. Санкт-Петербург. Символ-Плюс, 2003 — Примеч. науч. ред.

· #191

Это приложение приведено в буквальном виде с веб-страницы, указанной вначале — Примеч. автора.

· #192

http://www1.neweb.ne.jp/wa/yamdas/column/technique/21-daysj.htmlПримеч. автора.

· #193

http://loro.sf.net/notes/21-dias.htmlПримеч. автора.

· #194

Это — неофициальный перевод Лицензии Caldera для старой Unix на русский язык. Он не был опубликован Caldera International, Inc и не может легально определять условия распространения программных продуктов, использующих Лицензию Caldera — только оригинальный английский текст Лицензии Caldera для старой Unix имеет законную силу.

· #195

Это — неофициальный перевал Общедоступной лицензии GNU на русский язык. Он не был опубликован Фондом Свободного Программного Обеспечения и не может легально определять условия распространения программных продуктов, использующих Общедоступную лицензию GNU — только оригинальный английский текст Общедоступной лицензии GNU имеет законную силу.

----

Оглавление книги


Генерация: 0.065. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз