Основы программирования в Linux - Мэтью Нейл Страница 57

Тут можно читать бесплатно Основы программирования в Linux - Мэтью Нейл. Жанр: Компьютеры и Интернет / Интернет. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте FullBooks.club (Фулбукс) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Основы программирования в Linux - Мэтью Нейл

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту pbn.book@yandex.ru для удаления материала


Основы программирования в Linux - Мэтью Нейл краткое содержание

Прочтите описание перед тем, как прочитать онлайн книгу «Основы программирования в Linux - Мэтью Нейл» бесплатно полную версию:
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Основы программирования в Linux - Мэтью Нейл читать онлайн бесплатно

Основы программирования в Linux - Мэтью Нейл - читать книгу онлайн бесплатно, автор Мэтью Нейл

<b>#include &lt;unistd.h&gt;</b>

<b>int chdir(const char *path);</b>

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

<b>#include &lt;unistd.h&gt;</b>

<b>char *getcwd(char *buf, size_t size);</b>

Функция getcwd записывает имя текущего каталога в заданный буфер buf. Она возвращает NULL, если имя каталога превысит размер буфера (ошибка ERANGE), заданный в параметре size. В случае успешного завершения она возвращает buf.

Функция getcwd может также вернуть значение NULL, если во время выполнения программы каталог удален (EINVAL) или изменились его права доступа (EACCESS).

Просмотр каталогов

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

Функции работы с каталогами объявлены в заголовочном файле dirent.h. В них используется структура DIR как основа обработки каталогов. Указатель на эту структуру, называемый потоком каталога (DIR*), действует во многом так же, как действует поток файла (FILE*) при работе с обычным файлом. Элементы каталога возвращаются в структурах dirent, также объявленных в файле dirent.h, поскольку никому не следует изменять поля непосредственно в структуре DIR.

Мы рассмотрим следующие функции:

opendir, closedir;

□ readdir;

□ telldir;

□ seekdir;

□ closedir.

opendir

Функция opendir открывает каталог и формирует поток каталога. Если она завершается успешно, то возвращает указатель на структуру DIR, которая будет использоваться для чтения элементов каталога.

<b>#include &lt;sys/types.h&gt;</b>

<b>#include &lt;dirent.h&gt;</b>

<b>DIR *opendir(const char *name);</b>

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

readdir

Функция readdir возвращает указатель на структуру, содержащую следующий элемент каталога в потоке каталога dirp. Успешные вызовы readdir возвращают следующие элементы каталогов. При возникновении ошибки и в конце каталога readdir возвращает NULL. Системы, удовлетворяющие стандарту POSIX, возвращая NULL, не меняют переменную errno в случае достижения конца каталога и устанавливают ее значение, если обнаружена ошибка.

<b>#include &lt;sys/types.h&gt;</b>

<b>#include &lt;dirent.h&gt;</b>

<b>struct dirent *readdir(DIR *dirp);</b>

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

В состав структуры dirent, содержащей реквизиты элемента каталога, входят следующие компоненты.

□ ino_t d_ino — индекс файла;

□ char d_name[] — имя файла.

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

telldir

Функция telldir возвращает значение, регистрирующее текущую позицию в потоке каталога. Вы можете использовать ее в последующих вызовах функции seekdir для переустановки просмотра каталога, начиная с текущей позиции.

<b>#include &lt;sys/types.h&gt;</b>

<b>#include &lt;dirent.h&gt;</b>

<b>long int telldir(DIR *dirp);</b>

seekdir

Функция seekdir устанавливает указатель на элемент каталога в потоке каталога, заданном в параметре dirp. Значение параметра loc, применяемого для установки позиции, следует получить из предшествующего вызова функции telldir.

<b>#include &lt;sys/types.h&gt;</b>

<b>#include &lt;dirent.h&gt;</b>

<b>void seekdir (DIR *dirp, long int loc);</b>

closedir

Функция closedir закрывает поток каталога и освобождает ресурсы, выделенные ему. Она возвращает 0 в случае успеха и -1 при наличии ошибки.

<b>#include &lt;sys/types.h&gt;</b>

<b>#include &lt;dirent.h&gt;</b>

<b>int closedir(DIR *dirp);</b>

В приведенной далее программе printdir.c (упражнение 3.4) вы соберете вместе множество функций обработки файлов для создания простого перечня содержимого каталога. Каждый файл представлен отдельной строкой. У каждого подкаталога есть имя, за которым следует слэш, и файлы, содержащиеся в подкаталоге, выводятся с отступом шириной в четыре пробела.

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.