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