244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|
1 | |
В родительском каталоге посчитать количество каталогов и вывести имена каталогов, используя суперблок26.05.2015, 11:52. Показов 3115. Ответов 12
Метки нет (Все метки)
Здравствуйте!
Собственно часть моего задания написано в шапке темы. Полностью же мое задание звучит так: В родительском каталоге подсчитать количество каталогов, вывести их имена и номера блоков. В задании меня смущает фраза, в которой говорится о работе с супер блоком для выполнения этого задания. Нашел несколько тем, которые максимально похожи на то, что нужно сделать мне, но не вижу связи с супер блоками: https://www.cyberforum.ru/c-li... 13663.html https://www.cyberforum.ru/c-li... 95986.html https://www.cyberforum.ru/c-li... ost7526469 В книге "Операционные системы unix и программирование на Си" описана несколько другая структура супер блока. Собственно мой вопрос: в каком направлении, так сказать, идти, чтобы решить эту задачу. Что лучше почитать об этом? Или те ссылки, которые я нашел, и есть решение моей задачи? Заранее спасибо за помощь!
0
|
26.05.2015, 11:52 | |
Ответы с готовыми решениями:
12
Подсчитать число каталогов в родительском каталоге, затем напечатать их имена и номера индексных дескрипторов Подсчитать число каталогов в родительском каталоге. Напечатать их имена и номера блоков, соответствующих файлам Вывести на экран в текущем каталоге имена тех каталогов, которые в себе не содержат подкаталогов Вывести на экран в текущем каталоге имена тех каталогов, которые в себе не содержат подкаталогов |
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|
26.05.2015, 15:27 [ТС] | 3 |
drfaust, вот именно это я обнаружил после прочтения соответствующей главы в книге. Теперь я вообще не вижу связи суперблока и информации о каталогах. Он ведь содержит информацию о свободных блоках помимо еще какой-то служебной информации.
Может все-таки есть какая-то связь суперблока и задания?
0
|
26.05.2015, 15:34 | 4 |
Сообщение было отмечено Gr1f0nn как решение
Решение
LinuxKernelDevelopment на русском, читать "глава 12" Экземпляр древний, структуры могут отличаться.
Может препод имел ввиду работу с inode и структурой каталогов. В суперблоке есть только ссылка на точку монтирования данной ФС.
1
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|
26.05.2015, 15:56 [ТС] | 5 |
drfaust, спасибо огромное за книгу! Вполне возможно, что это и имелось в виду. во всяком случае это уже больше похоже на правду.
Единственное, у меня остался один вопрос: нужны ли какие-то особые права пользователя для того, чтобы можно было считывать данные из этих структур? Как мне кажется, то нет, но пепдаватель сказал, что нужны. Так ли это?
0
|
26.05.2015, 21:13 | 6 |
Если работать с /dev/sdX то да, права нужны, если работать только с родительским каталогом и ниже - то права самого каталога (если это / то права нужны, если это к-то тестовый каталог в хомяке и всё что в нём принадлежит юзеру, то нет). В общем случае права рута на запуск проги (suid бит например и т.п.)
1
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|
26.05.2015, 23:12 [ТС] | 7 |
drfaust, Ага, теперь понял, о чем он говорил.
Еще раз спасибо!
0
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|||||||||||
28.05.2015, 14:26 [ТС] | 8 | ||||||||||
Снова здравствуйте!
В прошлой теме я задал вопрос : https://www.cyberforum.ru/c-li... 58504.html Теперь возник другой вопрос: правильно ли я сделал? Суть в том, что по тому, как объявлена структура stat, то она больше похожа как раз-таки на inode. В этой структуре должен быть указатель на структуру суперблока. В книгах, да и в гугле пишут, что нужно подключить sys/filsys.h или linux/fs.h . Ни тот, ни другой инклюд не помогает. Вполне возможно, что то, что написано, уже отвечает поставленной задаче (лично меня уже все устраивает ^_^), но мне как-то надо получить еще суперблок, который связан с этими каталогами. Так как я проверяю это в своем подкаталоге, в котором еще куча каталогов, то, как я понимаю, суперблок будет для них один и тот же, но не уверен в этом. Теперь, собственно, суть вопроса кратко: правильно ли я сделал и, если нет, то как мне получить доступ к структуре суперблока через структуру inode (она же stat(???) здесь)? Я unix подобные ОС (надеюсь, что правильно написал), откровенно говоря, никогда не использовал, поэтому опыта работы в них нет.
Добавлено через 1 минуту Да, забыл написать, что работаю в FreeBSD 10.0 Добавлено через 12 часов 44 минуты Немного перефразирую вопрос: правильно ли я понял, что структура stat в данном случае и есть структура inode и как мне из этой структуры вытащить указатель на структуру суперблока? К сожалению, структура суперблока имеет неизвестное мне название и вариант
0
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
|
30.05.2015, 14:20 [ТС] | 9 |
Нашел структуру суперблока конкретно для freebsd 10.1
https://www.freebsd.org/cgi/ma... ormat=html Но все равно никак не могу понять, как же мне получить информацию из нее. Какую нужно вызвать функцию, чтобы я мог потом прочитать ту информацию, которая мне нужна? Для конкретного родительского каталога. По идее я должен как-то сначала получить структуру inode, а оттуда получить указатель на нужный мне суперблок. Тогда, как получить эту структуру с нужной мне информацией? И, как я понял, я ошибочно думал, что структура stat - это нечто похожее на inode. Буду благодарен за любую помощь!
0
|
31.05.2015, 19:08 | 10 |
Если не изменяет склероз место(и места его возможных копий) суперблока и его содержимое (или отсутствие как такового как в FAT) в ФС зависит от типа ФС. Для фряхи надо ковырять UFS/ZFS, т.к FFS давно погибла. Где именно на диске он находится - не подскажу, с файловыми системами юникс-лайк я тесно не работал, но подозреваю, что получить к нему доступ надо работать с /dev/sd*.
1
|
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
|
||||||
01.06.2015, 17:31 [ТС] | 11 | |||||
drfaust, Да вроде нашел, в каком заголовочном файле находится структура блока, но теперь нужно понять, как сначала получить доступ к inode структуре , а потом оттуда вытащить указатель на суперблок и произвести нужные с ним операции.
Еще раз перечитал ссылку (точнее содержимое страницы ^_^), которую я скинул выше, и вроде как понял, что и где искать (в каких заголовочных файлах), но вот остался вопрос: допустим я объявил переменную типа inode. Как мне считать в эту структуру нужную мне информацию конкретного каталога? Добавлено через 1 минуту Еще раз перечитал главу в книге, которую вы мне подсказали, и увидел, что мне нужно для этого подняться на уровень "вверх". то есть сначала считать структуру dentry, затем оттуда вытащить указатель на inode, а затем уже вытащить указатель на структуру суперблока. Осталось только понять, как считать структуру dentry >< Добавлено через 19 часов 38 минут В общем, еще раз (третий) перечитал главу. Осознал следующее: Структура file имеет в себе указатель на структуру dentry. Структура dentry имеет в себе указатель на структуру суперблока. Все бы ничего, но не могу найти, какой заголовочный файл надо подключить, чтобы использовать структуру dentry. С суперблоком вроде все понятно стало. Это
Не по теме: P.S.
0
|
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 2
|
|
28.04.2016, 11:44 | 12 |
Ребят, дали такое же задание в вузе, как и в заголовке. Сделал сначала просто через opendir. Сказали, что слишком высокоуровнево. Сделал с помощью getdents. Снова не то.
Затем специально уточнили, что нужно использовать именно суперблок. Уже и поисковик мучал, пытаясь как-то связать супеблок и вывод структуры директории, и какие-то древние книжки по unix, рекомендованные преподавателем нашел-полистал. Толком ничего нет. Максимум - что такое суперблок. Если у кого-то есть информация по теме или кто-то что-то подобное делал - поделитесь информацией, пожалуйста.
0
|
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 2
|
|
20.05.2016, 02:41 | 13 |
Просмотрел несколько книг разной степени давности, поискал на английском - ниаких успехов.
0
|
20.05.2016, 02:41 | |
20.05.2016, 02:41 | |
Помогаю со студенческими работами здесь
13
Как вывести имена каталогов, в которых есть каталоги? Копирование всех каталогов с одним заданным именем из множества неизвестных каталогов Архивирование определённых файлов из разных каталогов с сохранением структуры этих каталогов Курсач горит,нужно организовать удаление каталогов и копирование каталогов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |