Читаем Linux API. Исчерпывающее руководство полностью

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

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

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

• Абсолютное путевое имя начинается со слеша и указывает на местоположение файла относительно корневого каталога. Примеры абсолютного путевого имени для файлов, показанных на рис. 2.1: /home/mtk/.bashrc, /usr/include и / (путевое имя корневого каталога).

Относительное путевое имя указывает местоположение файла относительно рабочего каталога текущего запущенного процесса (см. ниже) и отличается от абсолютного путевого имени отсутствием начального слеша. На рис. 2.1 из каталога usr на файл types.h можно указать, используя относительное путевое имя include/sys/types.h, а из каталога avr доступ к файлу. bashrc можно получить с помощью относительного путевого имени../mtk/.bashrc.


Текущий рабочий каталог

У каждого процесса есть свой текущий рабочий каталог (который иногда называют просто рабочим или текущим). Это «текущее местоположение» процесса в иерархии одного каталога, и именно с данного каталога для процесса интерпретируются относительные путевые имена.

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


Владение файлами и права доступа

С каждым файлом связаны UID и GID, определяющие владельца этого файла и группу, к которой он принадлежит. Понятие «владение файлом» применяется для определения прав доступа пользователей к файлу.

Для организации доступа к файлу система делит пользователей на три категории: на владельца файла (иногда называемого пользователем файла), пользователей, входящих в группу, соответствующую идентификатору группы (группу) файла, и всех остальных (других пользователей). Для каждой из этих категорий пользователей могут быть установлены три бита прав доступа (что всего составляет девять бит прав доступа):

• права доступа на чтение позволяют считывать содержимое файла;

права доступа на запись дают возможность вносить изменения в содержимое файла;

• права доступа на выполнение позволяют выполнять файл, который является либо программой, либо сценарием, обрабатываемым каким-нибудь интерпретатором (обычно, но не всегда им оказывается одна из оболочек).

Эти права доступа могут быть установлены и для каталогов, хотя их значения несколько отличаются:

• права доступа на чтение позволяют выводить список содержимого каталога (например, список имен файлов);

права доступа на запись дают возможность изменять содержимое каталога (например, можно добавлять имена файлов, заниматься их перемещением и изменением);

права доступа на выполнение (иногда называемые поиском) позволяют получить доступ к файлам внутри каталога (с учетом прав доступа к самим файлам).


2.5. Модель файлового ввода-вывода

Одной из отличительных черт модели ввода-вывода в системах UNIX является понятие универсальности ввода-вывода. Это означает, что одни и те же системные вызовы (open(), read(), write(), close() и т. д.) используются для выполнения ввода-вывода во всех типах файлов, включая устройства. (Ядро преобразует запросы приложений на ввод/вывод в соответствующие операции файловой системы или драйверов устройств, выполняющие ввод/вывод в отношении целевого файла или устройства.) Из этого следует, что программа, использующая эти системные вызовы, будет работать с любым типом файлов.

По сути, ядро выдает один тип файла: последовательный поток байтов, к которому, в случае файлов на дисках, дисков и ленточных накопителей, можно получить произвольный доступ с помощью системного вызова lseek().

Перейти на страницу:

Похожие книги

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных