(c) Larry Ewing, Simon Budig, Garrett LeSage
с 1994 г.

Кафедра Информатики и Математического Обеспечения

ПетрГУ | ИМиИТ | О кафедре | Мобильные платформы | Лаборатория ИТС | Семинары НФИ/AMICT
Сотрудники | Выпускники | Учебный процесс | Табель-календарь | Курсовые и выпускные работы
Вычислительные ресурсы | Публикации | Архив новостей | Контактная информация

Упражнение 4.1

Измение функцию my_double_ls из предыдущего примера так, чтобы она имела второй параметр - целочисленную переменную skip. Если значение skip равно нулю, то функция my_double_ls должна выполняться так же, как и раньше. Если значение переменной skip равно 1, функция my_double_ls должна пропускать все имена файлов, которые начинаются с точки (.)

Упражнение 4.2

В предыдущей главе мы познакомились с использованием системных вызовов stat и fstat для получения информации о файле. Структура stat, возвращаемая вызовами stat и fstat, содержит поле st_mode, режим доступа к файлу. Режим доступа к файлу образуется при помощи выполнения побитовой операции "или" значения кода доступа с константами, определяющими, является ли этот файл обычным файлом, каталогом, специальным файлом или механизмом межпроцессного взаимодействия, таким как именованный канал. Наилучший способ проверить, является ли файл каталогом - использовать макрос S_ISDIR:

/* Переменная buf получена в результате вызова stat */
if(S_ISDIR(buf.st_mode)) 
  printf("Это каталог\n");
else
  printf("Это не каталог\n");

Измените процедуру my_double_ls так, чтобы она вызывала stat для каждого найденного файла и выводила звездочку после каждого имени каталога.