Арнольд Роббинс - Linux программирование в примерах
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
Ну, мы игнорируем мысль, что два супруга могли бы хотеть поговорить друг с другом и насладиться компанией — Примеч. автора.