Книга: Linux программирование в примерах
Сноски из книги
· #1Это знаменитое высказывание было сделано на Международном симпозиуме по эффективному производству больших программ в Jablonna, Польша, 10-14 августа 1970 г. — Примеч. автора.
· #2http://www.ansi.org
— Примеч. автора.
http://www.iso.ch
— Примеч. автора.
http://www.opengroup.org
— Примеч. автора.
http://www.gnu.org
— Примеч. автора.
Игра слов: 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 — Примеч. науч. ред.
· #10http://www.southern-storm.com.au/v7upgrade.html
— Примеч. автора.
Некоторые системы позволяют рядовым пользователям назначать владельцем их файла кого-нибудь еще, таким образом «отдавая его». Детали определяются стандартом 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
) Перепечатано и адаптировано по разрешению — Примеч. автора.
Это утверждение относится к ядру HURD, которое все еще находится в стадии разработки (в начале 2004 г.) Разработка на основе GCC и библиотеки GNU С (GLIBC) сегодня имеет место большей частью на Linux-системах — Примеч. автора.
· #21Стиль расположения кода, рекомендуемый фондом свободного программного обеспечения (Free Software Foundation) — Примеч. науч. ред.
· #22Эта ситуация имела место примерно в 1993 г; трюизм даже более очевиден сегодня, когда пользователи обрабатывают с помощью gawk
гигабайты протокольных файлов — Примеч. автора.
Раздел 13.4, «Не могли бы вы произнести это для меня по буквам?», с. 521, дает обзор многобайтных символов и кодировок — Примеч. автора.
· #24Механика проверки ошибок и сообщений о них обсуждаются в разделе 4.3, «Обнаружение неправильной работы» — Примеч. автора.
· #25Русский перевод Брайан Керниган, Денис Ритчи. Язык программирования Си (изд. 3-е, исправленное) Санкт- Петербург. Невский диалект, 2001 — Примеч. науч. ред.
· #26http://www.gnu.org/gnu/thegnuproject.html
— Примеч. автора.
Имя команды — ls
в данном примере, так же доступно программе в качестве аргумента — Примеч. науч. ред.
См. /usr/src/cmd/echo.c
в дистрибутиве V7 — Примеч. автора.
Когда мы спросили Джима Мейеринга (Jim Meyering), сопроводителя Coreulils, о наличии register
в GNU Coreutils, он дал нам интересный ответ. Он удаляет эти слова при изменении кода, но в остальных случаях оставляет их на месте, чтобы облегчить интеграцию сделанных изменений с существующими версиями — Примеч. автора.
См. http://sources.redhat.com
— Примеч. автора.
http://plan9.bell-labs.com/magic/man2html/2/arg
— Примеч. автора.
http://www.gnu.org/manual/glibc/html_node/Argp.html
— Примеч. автора.
http://256.com/sources/argv
— Примеч. автора.
http://autogen.sourceforge.net/autoopts.html
— Примеч. автора.
ftp://ftp.gnu.org/gnu/gengetopt/
— Примеч. автора.
http://nis-www.lanl.gov/~jt/Software/opt/opt-3.19.tar.gz
— Примеч. автора.
http://freshmeat.net/projects/popt/?topic_id=809
— Примеч. автора.
Существует также другое название для этой области данных — Неинициализированные данные — Примеч. науч. ред.
· #39BSS означает 'Block Started by Symbol', мнемоника из ассемблера IBM 7094 — Примеч. автора.
· #40Дамп ядра (core dump) является образом запущенного процесса в памяти, который создаётся при неожиданном завершении процесса. Позже этот дамп может быть использован для отладки Unix-системы, называют это файл core
, а системы GNU/Linux — core.pid
, где pid
— ID потерпевшего крушения процесса — Примеч. автора.
Описание здесь намеренно упрощено. Запущенные программы занимают значительно больше места, чем указывает программа size
, поскольку разделяемые библиотеки включены в адресное пространство. Также сегмент данных будет расти по мере выделения программной памяти — Примеч. автора.
Он получен от реальной практики работы с gawk
— Примеч. автора.
Этот код несет с собой аромат практического опыта, не удивительно было узнать, что более ранние версии просто проверяли наличие обратного слеша перед символом конца строки, пока кто-то не пожаловался, что он не работает, когда в конце строки есть несколько обратных слешей — Примеч. автора.
· #44Эта функция завершает выполнение программы — Примеч. науч. ред.
· #45alloca(3) — Примеч. науч. ред.
· #46open()
является одним из немногих варьирующих (variadic) системных вызовов — Примеч. автора.
См. /usr/src/cmd/cat.c
в дистрибутиве V7. Программа без изменений компилируется для GNU/Linux. — Примеч. автора.
По крайней мере, три из этих блоков содержат данные, которые мы записали, другие для использования операционной системой при отслеживании размещения этих данных — Примеч. автора.
· #49Да, это пишется так. Кена Томпсона (Ken Thompson), одного из двух «отцов» Unix, однажды спросили, что бы он сделал по-другому, если бы ему пришлось переделать Unix. Он ответил, что написал бы creat()
с «e» на конце. И в самом деле, именно это он сделал для операционной системы Plan 9 From Bell Labs — Примеч. автора.
Если у вас нет UPS и вы используете систему для критической работы, мы настоятельно рекомендуем вам обзавестись им. Следует также регулярно делать резервные копии. — Примеч. автора.
· #51Состояние .гонки (race condition) является ситуацией, при которой детали временных соотношений могут вызывать непреднамеренные побочные эффекты или ошибки. В данном случае, каталог в течение короткого периода времени находится в противоречивом состоянии, и именно эта противоречивость и создаёт уязвимость — Примеч. автора.
· #52Конечно, меняются служебные данные файла (число ссылок), но это не влияет ни на какой другой атрибут файла, также, как не влияет на содержимое файла. Обновление счетчика ссылок на файл является единственной операцией над файлом, при которой не проверяются права доступа к файлу — Примеч. автора.
· #53См /usr/src/cmd/rmdir
с в дистрибутиве V7 — Примеч. автора.
То есть прочитаны все элементы каталога — Примеч. науч. ред.
· #55В системах GNU/Linux могут монтироваться файловые системы многих операционных систем, не относящихся к Unix. Во многих коммерческих системах Unix также можно смонтировать файловые системы MS-DOS. В таких случаях предположения относительно файловых систем Unix неприменимы — Примеч. автора.
· #56Стоит внимательно подумать прежде чем использовать эти функции — Примеч. науч. ред.
· #57Linux использует блочные устройства исключительно для дисков. Другие системы используют оба типа — Примеч. автора.
· #58Именованные каналы и сокеты были разработаны независимо группами Unix System V и BSD соответственно. Когда системы Unix вновь сошлись, обе разновидности файлов стали доступными универсально —- Примеч. автора.
· #59Технический термин warm fuzzy — Примеч. автора.
· #60Это утверждение было верно для V7, на современных системах больше нет таких гарантий — Примеч. автора.
· #61Спасибо Джиму Мейерингу (Jim Meyering) за объяснение проблем — Примеч. автора.
· #62UTC представляет собой независимое от языка сокращение для Coordinated Universal Time (универсальное скоординированное время). Старый код (а иногда и люди постарше) называют это Гринвичским временем (Greenwich Mean Time, GMT), которое является временем в Гринвиче, Великобритания. Когда стали широко использоваться часовые пояса, в качестве точки отсчета, относительно которого все остальные часовые пояса отсчитывались либо вперед, либо назад, был выбран Гринвич — Примеч. автора.
· #63fchown()
и fchmod()
были введены в 4 2 BSD, но не включались в System V до выпуска 4 — Примеч. автора.
a.m. — от ante meridiem (до полудня), p.m. — от post meridiem (пополудни), американская система обозначения 12-часового цикла времени суток. — Примеч. перев.
· #65Хотя POSIX стандартизует формат TZ, он не представляет интереса, поэтому мы не стали возиться здесь с его документированием. В конце концов, именно tzset()
должна понимать формат, а не код пользователя. Реализации могут использовать и используют форматы, которые расширяют POSIX — Примеч. автора.
Вывод, показанный здесь, относится к US Eastern Standard Time. Вы получите различные результаты для одних и тех же программ и данных, если используете другой часовой пояс — Примеч. автора.
· #67STL (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
— Примеч. автора.
К сожалению, если производительность является проблемой, нет стандартных способов узнать, как ваша библиотека осуществляет работу, а на самом деле способ ее работы может варьировать во время исполнения! (См. справочную страницу nsswitchconf(5) в системе GNU/Linux.) С другой стороны, назначением API помимо всего прочего является сокрытие деталей — Примеч. автора.
· #71Русский перевод Дональд E. Кнут. Искусство программирования Том 3. Сортировка и поиск (2-е издание). Москва • Санкт-Петербург • Киев, Вильямс, 2000 — Примеч. науч. ред.
· #72http://www/gtk.org
— Примеч. автора.
http://www.gnome.org
— Примеч. автора.
http://www/gtk.org/rdp
— Примеч. автора.
В C++ это по-другому: там символьные константы действительно имеют тип char. Это различие не влияет на данный конкретный код — Примеч. автора.
· #76GNU/Linux и Solaris дают возможность монтировать один файл поверх другого; это продвинутое использование, которое мы не будем обсуждать — Примеч. автора.
· #77Например, при обновлении VAX 11/780 с 4.1 BSD до 4.2 BSD — Примеч. автора.
· #78System V Release 3 поддерживала два различных размера блоков: 512 байтов и 1024 байта, но в остальном организация диска была той же самой — Примеч. автора.
· #79Университет Карнеги-Меллона — Примеч. перев.
· #80Источник: http://www.ife.ee.ethz.ch/music/software/sag/subsection2_5_4_3.html
— Примеч. автора.
Ha GNU/Linux и большинстве систем Solaris и некоторые системы на основе System V Release 4 используют /etc/vfstab
, возможно, с другим форматом — Примеч. автора.
См. /usr/include/bits/statvfs.h
на системе GNU/Linux — Примеч. автора.
На системах GNU/Linux и BSD для получения нижележащего дескриптора файла можно применить функцию dirfd()
к указателю DIR*
, см. справочную страницу GNU/Linux dirfd(3) — Примеч. автора.
POSIX стандартизировал ftw()
для поддержки существующего кода, а GNU/Linux b коммерческие системы Unix продолжают её поддерживать. Однако, поскольку она недостаточно функциональна, мы не будем больше ее обсуждать. Если интересуетесь, см. ftw(3). — Примеч. автора.
У некоторых старых версий GLIBC были проблемы с FTW_CHDIR. Это не относится к GLIBC 2.3.2 и более поздним, и маловероятно, что вы столкнетесь с проблемами — Примеч. автора.
· #86Мы не знаем, почему кому-нибудь может понадобиться делать такое изменение, но философия «что вы просили, то и получили» применяется и здесь! — Примеч. автора.
· #87Хэш-таблица является структурой данных, позволяющей быстрое получение сохраненной информации, подробности выходят за рамки данной книги — Примеч. автора.
· #88Fork (англ.) — «n вилка, развилка, v разветвлять, ответвлять» — Примеч. перев.
· #89Такие процессы часто демонстрируют детское поведение. — Примеч. автора.
· #90См. 9.1.4.3 Имена программ и argv[0]
— Примеч. науч. ред.
Мы это не придумываем. Терминология, конечно, не совсем правильна, но таким было чувство юмора разработчиков оригинальной Unix — Примеч. автора.
· #92Дважды проверьте справочную страницу getrusage(2), если у вас более новое ядро, поскольку это поведение, возможно, изменилось — Примеч. автора.
· #93csh
и tcsh
также могут быть включены в эту категорию, но мы предпочитаем оболочки в стиле оболочки Борна — Примеч. автора.
Такая операция часто обозначается no-op — «no operation» (нет операции) — Примеч. автора.
· #95Мы уверены, что вы не волновались. В конце концов, вы, возможно, используете конвейеры из оболочки десятки раз в день — Примеч. автора.
· #96Что они ели на обед, остается не указанным. — Примеч. автора.
· #97FIFO означает «first in, first out» — «первым вошел, первым вышел». Так работают каналы. — Примеч. автора.
· #98На системах GNU/Linux /dev/fd
является символической ссылкой на /proc/self/fd
, но поскольку /dev/fd
является общеизвестным, в своем коде следует использовать именно его — Примеч. автора.
Хотя мы показали простые команды, допустимы произвольные конвейеры — Примеч. автора.
· #100Стандарт POSIX умышленно не приписывает ей значение. Однако, чтобы старый код продолжал работать, единственным значением, которое могла бы разумно использовать любая реализация, является 1 — Примеч. автора.
· #101Ну, мы игнорируем мысль, что два супруга могли бы хотеть поговорить друг с другом и насладиться компанией — Примеч. автора.
· #102В одно и то же время есть только один сопроцесс по умолчанию (доступный посредством 'read -p
' и 'print -p
'). Сценарии оболочки могут использовать команду exec
со специальной записью перенаправления для назначения дескрипторов файла сопроцесса определенным номерам. После этого можно запустить другой сопроцесс — Примеч. автора.
Очевидно, вы можете их закрыть. Но если вы не знаете, что они открыты, они теряются с таким же успехом, как и память через утечку памяти — Примеч. автора.
· #104Игра слов kill-overkill (избыточно — overkill) — Примеч. перев.
· #105По крайней мере один поставщик дистрибутивов GNU/Linux отменяет сознание файлов core
«с иголочки». Для повторного подключения этой возможности поместите в свой файл ~/.profile
строку 'ulimit -S -с unlimited
' — Примеч. автора.
Handler (англ.) — обработчик — Примеч. перев.
· #107Изменение поведения было плохой мыслью, сильно критиковавшейся в свое время, но было слишком поздно. Изменение семантики определенного интерфейса всегда ведет к проблеме, как было в этом случае. Хотя это особенно относится к проектировщикам операционных систем, любой, кто разрабатывает библиотеки общего назначения, также должен помнить этот урок. — Примеч. автора.
· #108Хотя мы описываем read()
, эти правила применяются ко всем системным вызовам, которые могут завершиться с ошибкой EINTR
, как, например, семейство функций wait()
— Примеч. автора.
Для использования API требуется компоновка с отдельной библиотекой, — ljobs
— Примеч. автора.
Насколько мы смогли определить, имена SA_NOMASK
и SA_ONESHOT
являются специфическими для GNU/Linux. Если кому-нибудь известно иное, пожалуйста, сообщите нам!
Наша благодарность Ульриху Дрепперу (Ulrich Drepper) за помощь в разъяснении, связанных с этим проблем — Примеч. автора.
· #112Исторически системы BSD использовали имя SIGCHLD
, которое используется и POSIX. В System V есть сходный сигнал с именем SIGCLD
. GNU/Linux определяет последний через #define
как первый — см. табл. 10.1 — Примеч. автора.
Возможно, лучшим именем для функции было бы child_at_school()
[ребенок_в_школе] — Примеч. автора.
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 передала патент общественности, разрешив всем использовать свою технологию — Примеч. автора.
Безопасность для систем GNU/Linux и Unix является глубокой темой сама по себе. Это просто пример. см. раздел 11.9 «Рекомендуемая литература» — Примеч. автора.
· #118Одной из программ, разработанных с этой целью, является GNU userv (ftp://ftp.gnu.org/gnu/userv/
) — Примеч. автора.
На ум приходят образы счастливых юных программ их лица и руки, запачканные шоколадом — Примеч. автора.
· #120E (Effective) эффективный ID, R (Real) действительный ID и S (Saved) сохраненный ID — Примеч. науч. ред.
· #121Однако, в своей лекции в честь присуждения премии Тьюринга Ассоциации по вычислительной технике в 1981 г. д-р Хоар утверждает, что эту идею выдвинул сам Алан Тьюринг — Примеч. автора.
· #122Как упоминалось в разделе 10.2 «Действия сигналов», некоторые дистрибутивы GNU/Linux запрещают создание файлов core
. Чтобы снова разрешить их, поместите в свой файл ~/.profile
строку 'ulimit -S -с unlimited
' — Примеч. автора.
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 — Примеч. автора.
См. wс(1). wc
подсчитывает строки, слова и символы — Примеч. автора.
Такое использование /dev/shm
на самом деле является злоупотреблением,, он предназначен для использования в реализации разделяемой памяти, а не в качестве электронного диска. Тем не менее, это полезно для иллюстрации нашей мысли — Примеч. автора.
На нашей системе 512 мегабайтов оперативной памяти, что для старых чудаков вроде автора кажется порядочным. Однако цены на память упали, и вполне обычны системы с одним или более гигабайтами оперативной памяти, по крайней мере, для разработчиков программного обеспечения — Примеч. автора.
· #127Пространство для подкачки состоит из одного или более выделенных участков диска, используемых для хранения частей исполняющегося процесса, который не находится в настоящее время в памяти — Примеч. автора.
· #128Такая утечка была у нас в gawk
К счастью, она исправлена — Примеч. автора.
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
http://www.cs.bell-labs.com/cm/cs/pearls/
— Примеч. автора.
Русский перевод: Дональд E. Кнут. Искусство программирования. Том 2. Получисленные алгоритмы (3-е издание). Москва - Санкт-Петербург - Киев. Вильямс. 2000 — Примеч. науч. ред.
· #133http://www-cs-faculty.stanford.edu/~knuth/taocp.html
— Примеч. автора.
Русский перевод — Дж. Фридл. Регулярные выражения (2-е издание). C.-Петербург, Питер, 2003 — Прим. науч. ред.
· #135http://www.gnu.org/software/grep/doc/grep.html
— Примеч. автора.
От английских слов i(nternationalizatio)n и l(ocalizatio)n —Примеч. перев.
· #137NLS — native language support — Примеч. перев.
· #138Существует более ранний дизайн, известный как catgets()
. Хотя он стандартизован POSIX, его гораздо сложнее использовать, и мы его не рекомендуем — Примеч. автора.
Программисты, долгое время работавшие на С и Unix, могут предпочесть использовать локаль 'С
', даже если их родной язык английский, английские локали дают другой результат по сравнению с тем, что ожидают эти седые, понюхавшие пороху ветераны Unix — Примеч. автора.
Мы так же счастливы, как и вы, поскольку нам не нужно представлять код, использующий эту полнофункциональную структуру — Примеч. автора.
В стандарте используется технический термин radix point (позиционный разделитель), поскольку числа с другим основанием счисления также могут иметь дробные части. Однако, для денежных значений можно довольно безопасно использовать термин 'decimal point' (десятичный разделитель) — Примеч. автора.
· #142Нам, вероятно, следовало выбрать более осмысленные имена вместо простых ii
и jj
, поскольку использующий их код короткий, отсутствие у нас воображения не представляет значительной проблемы — Примеч. автора.
Это устанавливается механизмом Autoconf и Automake. Autoconf и Automake являются мощными программными наборами, дающими возможность поддержки широкого круга Unix-систем систематическим образом — Примеч. автора.
· #144Хотя американцы часто ссылаются на эры определенных президентов, они не являются частью национального календаря в том же смысле, как в Японии до Второй мировой войны или в докоммунистическом Китае — Примеч. автора.
· #145Подробности приведены в документации GNU gettext
. Здесь мы концентрируемся на потребностях разработчика, а не переводчика — Примеч. автора.
Этот макрос обычно определяется автоматически программой configure
, либо в специальном заголовке, либо в командной строке компилятора configure
создается с помощью Autoconf и Automake — Примеч. автора.
Pig — свинья, поросенок (англ.) — Примеч. перев.
· #148Мы тщетно потратили 30 или 45 минут, пытаясь использовать каталог piglat/LC_MESSAGES
и установку LC_ALL=piglat
' без всякого успеха, пока не выяснили это — Примеч. автора.
ftp://ftp.gnu.org/gnu/gettext
— Примеч. автора.
http://www.unicode.org
— Примеч. автора.
GNU/Linux ее поддерживает, но лишь для совместимости — Примеч. автора.
· #152Справочная страница GNU/Linux fcntl(3) указывает, что этих сведений может быть недостаточно, процесс может находиться на другой машине! При блокировках по сети есть и другие проблемы, в общем, использование блокировки в файловых системах, смонтированных для удаленных компьютеров, не является удачной мыслью — Примеч. автора.
· #153В системе GNU/Linux lockf()
реализована в виде «оболочки» вокруг fcntl()
— Примеч. автора.
Тупик (deadlock) является ситуацией, при которой оба процесса блокируются, причем каждый из них ждёт, пока другой освободит определенный ресурс — Примеч. автора.
· #155Удачно, что название flock()
отличается от lockf()
, поскольку их семантика различна. Это также страшно сбивает с толку. Держите свое руководство под рукой. — Примеч. автора.
В справочной странице gettimeofday(2) документирована соответствующая функция settimeofday()
для использования суперпользователем (root
) для установки времени дня всей системы — Примеч. автора.
К сожалению, по-видимому, в настоящее время нет стандарта для названий членов struct stat
, что делает такую операцию непереносимой — Примеч. автора.
Корректное выполнение профилировки нетривиальная задача, если вы думаете о написании интерпретатора, стоит сначала провести свои исследования — Примеч. автора.
· #159В голову приходят образы, как маленькие двоичные структуры данных сидят друг рядом с другом за чаем и пирожными. По крайней мере, такое бывает, если вы проводите слишком много времени перед своим компьютером. — Примеч. автора.
· #160Этот вывод для часового пояса U.S. Eastern Time zone — Примеч. автора.
· #161Оптимизации компилятора являются общеизвестным козлом отпущения для логических ошибок. В прошлом обвинения компиляторов были более оправданы. Судя по нашему опыту, используя современные системы и компиляторы, очень редко можно обнаружить случаи, в которых оптимизации компилятора привносят ошибки в работающий код — Примеч. автора.
· #162Мы говорим об оригинальном BSD dbx
. В течение десяти лет мы использовали исключительно GDB — Примеч. автора.
ddd
поставляется со многими системами GNU/Linux. Исходный код доступен на FTP-сайте проекта GNU ddd(ftp://ftp.gnu.org/gnu/ddd/
) — Примеч. автора.
http.//sources.redhat.com/insight/
— Примеч. автора.
ftp://ftp.gnu.org/gnu/gdb/
— Примеч. автора.
http://www.gnu.org
— Примеч. автора.
Если вы хотите изменить такое поведение, см. sysctl(8) — Примеч. автора.
· #168Примерно 213?275 мм — Примеч. перев.
· #169Bjarne Stroustrup, создатель С++, настойчиво работал над тем, чтобы сделать использование препроцессора С совершенно ненужным в С++. По нашему мнению, он не вполне добился успеха: #include
нужен до сих пор, но не обычные макросы. Для С препроцессор остается ценным и инструментом, но он должен использоваться благоразумно — Примеч. автора.
Серьезно! Часто люди пропускают через gawk
мегабайты данных. Помните, никаких произвольных ограничений! — Примеч. автора.
Мы унаследовали эту схему. В общем, она работает, но все же есть проблемы. Целью данного раздела является передача накопленного нами в ходе работы с объединениями опыта — Примеч. автора.
· #172Опять-таки, GCC 3.1 или более новый и GDB 5 дают возможность непосредственного использования макросов, но только лишь если вы используете их совместно, с определенными опциями. Это было описано ранее в разделе 15.4.1.2 «По возможности избегайте макросов с выражениями». — Примеч. автора.
· #173Эта часть кода была с тех пор пересмотрена, поэтому там больше нет этих строк из примера. — Примеч. автора.
· #174Переписав код управления буфером! — Примеч. автора.
· #175ftp://ftp.ninemoons.corn/pub/dbug/
— Примеч. автора.
В C99, который допускает смешивание объявлений переменных с исполняемым кодом, это составляет меньшую проблему, но помните, что этот пакет был разработан для K&R С — Примеч. автора.
· #177Хотя нам следовало бы усвоить свой урок после первой компании, мы перешли ко второй. С тех пор, как мы это выяснили, мы обычно избегаем начинающие компании. Ваша выгода, конечно, может меняться — Примеч. автора.
· #178ftp://ftp.perens.com/pub/ElectricFence
— Примеч. автора.
GDB также позволяет определить переменную окружения LD_PRELOAD
: set environment LD_PRELOAD=PATH_TO_YOUR_LIBRARY
— Примеч. науч. ред.
http://www.dmalloc.com
— Примеч. автора.
Все в большей степени для разработки высококачественных продуктов используется также GNU/Linux! — Примеч. автора.
· #182http://www.winehq.com
— Примеч. автора.
http://valgrind.kde.org
— Примеч. автора.
http://www.linuxjournal.com/article.php?sid=6059
— Примеч. автора.
http://www.linuxjournal.com/article.php?sid=6556
— Примеч. автора.
http://www.splint.org
— Примеч. автора.
http://www.debuggingrules.com
— Примеч. автора.
http://www.amacombooks.org
— Примеч. автора.
http://www.cs.bell-labs.com/cm/cs/pearls/
— Примеч. автора.
Русский перевод Брайан Керниган, Роб Пайк. UNIX: Программное окружение. Санкт-Петербург. Символ-Плюс, 2003 — Примеч. науч. ред.
· #191Это приложение приведено в буквальном виде с веб-страницы, указанной вначале — Примеч. автора.
· #192http://www1.neweb.ne.jp/wa/yamdas/column/technique/21-daysj.html
— Примеч. автора.
http://loro.sf.net/notes/21-dias.html
— Примеч. автора.
Это — неофициальный перевод Лицензии Caldera для старой Unix на русский язык. Он не был опубликован Caldera International, Inc и не может легально определять условия распространения программных продуктов, использующих Лицензию Caldera — только оригинальный английский текст Лицензии Caldera для старой Unix имеет законную силу.
· #195Это — неофициальный перевал Общедоступной лицензии GNU на русский язык. Он не был опубликован Фондом Свободного Программного Обеспечения и не может легально определять условия распространения программных продуктов, использующих Общедоступную лицензию GNU — только оригинальный английский текст Общедоступной лицензии GNU имеет законную силу.