powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / папка это файл?
25 сообщений из 230, страница 1 из 10
папка это файл?
    #39996358
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток.

Скоро закончу читать K&R, сколько усилий было потрачено хорошо хоть на период изоляции легло. но вот они пишут , что в Unix папка представляет собой файл с которым можно проделать _open("dirname",...) , а затем собрать статистику по средствам stat(fd,...). Но у меня Win7 (файл ли там папка ?), а папку я создал, но результат функции _open -1. конкретно пытался вот так : fd = _open("dirname", _S_IREAD, 0); параметры функции не нашел где почитать про эти всякие _S_IREAD и прочее для винды (наверно ж это дело отличается в зависимости от операционки ?) . видимо на таком низком уровне никто уже не работает и никому не интересно. исходя хотелось бы помощи в следующих вопросах:

просьба подсказать как в моем случае должна выглядить fd = _open("dirname", _S_IREAD, 0); ?? с какими параметрами ?
p.s. папка реально существует там где надо. так как _open отрабатывает с простым текстовым созданным файлом
...
Рейтинг: 0 / 0
папка это файл?
    #39996359
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81как в моем случае должна выглядить fd = _open("dirname", _S_IREAD, 0); ??

Никак. Во времена K&R никакой Windows ещё не существовало даже в проекте.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
папка это файл?
    #39996360
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

andron81как в моем случае должна выглядить fd = _open("dirname", _S_IREAD, 0); ??

Никак. Во времена K&R никакой Windows ещё не существовало даже в проекте.


да , но _open адаптирован для обычных файлов в винде.
...
Рейтинг: 0 / 0
папка это файл?
    #39996374
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И чо? (с)

Уже одно его название, начинающееся с подчёркивания, говорит, что это какая-то левая
фигня, тянущаяся со времён доисторических. Удивительно не то, что оно не работает местами,
а то, что местами оно таки работает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
папка это файл?
    #39996379
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

И чо? (с)

Уже одно его название, начинающееся с подчёркивания, говорит, что это какая-то левая
фигня, тянущаяся со времён доисторических. Удивительно не то, что оно не работает местами,
а то, что местами оно таки работает.


Хорошо тогда, но тогда наверно есть что-то обновленное.
...
Рейтинг: 0 / 0
папка это файл?
    #39996384
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andron81
папка это файл?
папка это тот, кто мамку.
...
Рейтинг: 0 / 0
папка это файл?
    #39996401
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
что в Unix папка

Мамка. Папки у тебя в венде, а в unix - каталоги.
...
Рейтинг: 0 / 0
папка это файл?
    #39996402
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

Очень ценная информация. И как я раньше жил с этим заблуждением.
...
Рейтинг: 0 / 0
папка это файл?
    #39996406
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файлы и папки - физически это последовательность секторов на диске. Дальше правила ФС на логическом уровне делят что считать папкой, что файлом, что пустым местом и т.д. Технически можно представить папку файлом и прочитать его, но не средствами С. Вобщем тебе туда лезть не за чем. Язык С тебе дает средства для работы с файлами и папками - вот ими и пользуйся, если чего-то не хватает - есть API используемой ОС.

Если очень интересно как оно там внутри устроено, то гугли описание устройства файловой системы. В случае с виндовсом - NTFS. За полсотни лет с момента написания книги в организации ФС много чего поменялось.

PS K&R это книга по языку С, но язык далеко не все охватывает, для некоторых задач требуется дополнительно использовать средства ОС и/или специализированные библиотеки. Например если интересно все возможности виндавса поизучать - читай Рихтера Windows via C/C++ .
...
Рейтинг: 0 / 0
папка это файл?
    #39996409
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Файлы и папки - физически это последовательность секторов на диске. Дальше правила ФС на логическом уровне делят что считать папкой, что файлом, что пустым местом и т.д. Технически можно представить папку файлом и прочитать его, но не средствами С. Вобщем тебе туда лезть не за чем. Язык С тебе дает средства для работы с файлами и папками - вот ими и пользуйся, если чего-то не хватает - есть API используемой ОС.

Если очень интересно как оно там внутри устроено, то гугли описание устройства файловой системы. В случае с виндовсом - NTFS. За полсотни лет с момента написания книги в организации ФС много чего поменялось.

PS K&R это книга по языку С, но язык далеко не все охватывает, для некоторых задач требуется дополнительно использовать средства ОС и/или специализированные библиотеки. Например если интересно все возможности виндавса поизучать - читай Рихтера Windows via C/C++ .


ну так аналоги _open должны быть для винды. Задачу надо решить в концепции _open , а тут или найти аналог для винды , либо установить UNIX , либо положить болт на задачу. хочется первый вариант. а с K&R скоро нудные вопросы прекратятся - заканчивается. потерпите )))))
...
Рейтинг: 0 / 0
папка это файл?
    #39996411
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
ну так аналоги _open должны быть для винды. Задачу надо решить в концепции _open , а тут или найти аналог для винды , либо установить UNIX , либо положить болт на задачу. хочется первый вариант. а с K&R скоро нудные вопросы прекратятся - заканчивается. потерпите )))))

Задача какая? Получить содержимое папки виндовса? Изучай FindFirstFile() из WinAPI
...
Рейтинг: 0 / 0
папка это файл?
    #39996413
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
а тут или найти аналог для винды

Какой аналог и почему он должен быть? В Windows нет posix. Цепляй вендовые либы, там свои реализации.
...
Рейтинг: 0 / 0
папка это файл?
    #39996416
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
andron81
ну так аналоги _open должны быть для винды. Задачу надо решить в концепции _open , а тут или найти аналог для винды , либо установить UNIX , либо положить болт на задачу. хочется первый вариант. а с K&R скоро нудные вопросы прекратятся - заканчивается. потерпите )))))

Задача какая? Получить содержимое папки виндовса? Изучай FindFirstFile() из WinAPI


ОС: win7.
задача вывести список файлов в папке. А если в папке есть подпапки тогда выводить и их файлы, если в тех есть подпапки то выводим и их файлы .... в общем по сути рекурсивный обход дерева каталогов . findfirst это как бы другая концепция решения задачи. можно , конечно. я просто думал, что вот эти _open они ведь работают для винды в случае простых файлов. предполагал, что и для моей задачи адаптированы и можно ей прочитать папку как файл.
...
Рейтинг: 0 / 0
папка это файл?
    #39996417
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
ну так аналоги _open должны быть
Кому должны??? Вам? Так вас, возможно, ещё в проектах не было, когда закладывались основы юниксов. А создателей Windows вообще никак не колыхало наличие POSIX API и подходы там другие. Можно сказать, что ещё более древние.

Условный "юниксвей" исходит из не слишком практичной мысли, что небольшого количества примитивов достаточно для (самостоятельного) изготовления "чего угодно".
На даже в POSIX API есть отдельный readdir, поскольку "проколоться" самостоятельно разбирая (известную) структуру каталога - как два пальца об асфальт.
...
Рейтинг: 0 / 0
папка это файл?
    #39996422
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
andron81
ну так аналоги _open должны быть
Кому должны??? Вам?


да мне должны ! а если серьёзно если оставили функцию _open для обычных файлов, а не бросили её и не написали свою(хотя и свои вроде бы написали, но об аналогах никто не написал), то наверно могли и к папке такое же отношение сохранить(то есть как файлу).
Название темы какое ? Папка это файл ? в винде выходит, что нет ! такого же ответа мне никто не даёт.
вот в K&R пишут, да текст древний но всё - таки :

Так как в системе UNIX каталог — это тоже файл, функции ls, чтобы добраться до имен файлов, нужно только
его прочитать. Но чтобы получить другую информацию о файле (например узнать его размер), необходимо
выполнить системный вызов. В других системах (в MS-DOS, например) системным вызовом приходится
пользоваться даже для получения доступа к именам файлов. Наша цель — обеспечить доступ к информации
по возможности системно-независимым способом несмотря на то, что реализация может быть существенно
системно-зависима.

p.s. До этого задачки под юникс в книге удавалось на винду переписать. С вашей помощью , да.
...
Рейтинг: 0 / 0
папка это файл?
    #39996446
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
Basil A. Sidorov
пропущено...
Кому должны??? Вам?


да мне должны ! а если серьёзно если оставили функцию _open для обычных файлов, а не бросили её и не написали свою(хотя и свои вроде бы написали, но об аналогах никто не написал), то наверно могли и к папке такое же отношение сохранить(то есть как файлу).
Название темы какое ? Папка это файл ? в винде выходит, что нет ! такого же ответа мне никто не даёт.
вот в K&R пишут, да текст древний но всё - таки :

Так как в системе UNIX каталог — это тоже файл, функции ls, чтобы добраться до имен файлов, нужно только
его прочитать. Но чтобы получить другую информацию о файле (например узнать его размер), необходимо
выполнить системный вызов. В других системах (в MS-DOS, например) системным вызовом приходится
пользоваться даже для получения доступа к именам файлов. Наша цель — обеспечить доступ к информации
по возможности системно-независимым способом несмотря на то, что реализация может быть существенно

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

2. системным вызовам называют вызов который перключает контекст выполнения на ядро системы. в MSDos вы сами писали системные вызовы (хотя для той модели памяти это определение и условно, физической изоляции ядра не было), напрямую вызывая прерывания, в Winapi это делают за вас реализации функции API системы (в Linux кстати тоже используется такая прослойка). Теперь описания вызовов скрыты от вас и напрямую их вызывать не стоит. во-первых они не документированы, во-вторых - могут поменяться

3. независимый способ просмотра каталогов представляют все существующие промышленные языки в своём RTL, который написан под конкретную систему, но с практически одинаковым интерфейсом для разных ОС - тынц вот этими интерфейсами и пользуйтесь на здоровье (opendir, readdir, closedir), и будет вам платформонезависимое счастье
...
Рейтинг: 0 / 0
папка это файл?
    #39996447
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

Ну вообще, да, всегда считалось, что папка это файл. И в винде тоже. Но это касается сугубо внутреннего устройства файловой системы. Не факт что такой файл удастся открыть с помощью функций для открытия файлов.
...
Рейтинг: 0 / 0
папка это файл?
    #39996451
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
andron81,

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


в юникс можно. а тут фигвам ...
...
Рейтинг: 0 / 0
папка это файл?
    #39996458
crutchmaster
andron81
что в Unix папка

Мамка. Папки у тебя в венде, а в unix - каталоги.

нет там каталогов.
...
Рейтинг: 0 / 0
папка это файл?
    #39996470
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
Доброе время суток.

Скоро закончу читать K&R, сколько усилий было потрачено хорошо хоть на период изоляции легло. но вот они пишут , что в Unix папка представляет собой файл с которым можно проделать _open("dirname",...) , а затем собрать статистику по средствам stat(fd,...). Но у меня Win7 (файл ли там папка ?), а папку я создал, но результат функции _open -1. конкретно пытался вот так : fd = _open("dirname", _S_IREAD, 0); параметры функции не нашел где почитать про эти всякие _S_IREAD и прочее для винды (наверно ж это дело отличается в зависимости от операционки ?) . видимо на таком низком уровне никто уже не работает и никому не интересно. исходя хотелось бы помощи в следующих вопросах:

просьба подсказать как в моем случае должна выглядить fd = _open("dirname", _S_IREAD, 0); ?? с какими параметрами ?
p.s. папка реально существует там где надо. так как _open отрабатывает с простым текстовым созданным файлом


Мне кажется у меня дежа-вю и я уже писал тебе. Если ты - программист под Windows - то для работы с файловой системой
тебе надо использовать Windows API для работы с файлами и каталогами.

NTFS и Unix файловые системы очень архитетурно
отличаются. Например в Unix можно создавать символические линки на файлы. Можно создавать именованные канальные устройства
(файл-труба) где с одной стороны пишут и с другой читают. И есть определённые старые договорённости касающиеся наименований
файлов (case-sensitive) и Lookup (тоже case-sensitive). Есть биткарта атрибутов RWX продублированных трижды для себя
и для группы и для всех. И есть экзотические биты типа sticky. Все это в Windows НЕ РАБОТАЕТ.

Тоесть. Если ты решил и дальше серъезно углубляться в архитектуру K&R в части файловой системы
то тебе просто органически необходимо уходить с Windows. Или будешь почемучкой и
будешь постоянно приходить сюда и спрашивать почему у тебя
в Windows не выходит что-то сделать. Ты уже далеко вышел за рамки С/C++.

И отвечая на твой вопрос. Нет. Папка это не файл. И незачем тебе дальше углубляться в этот
вопрос если ты не хочешь создавать свои драйверы файловых систем.

Почитай по ключевым словам Virtual File System, Inode для кругозора.
...
Рейтинг: 0 / 0
папка это файл?
    #39996497
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
Задачу надо решить в концепции _open

Вы как то рано в в архитектуру полезли)
...
Рейтинг: 0 / 0
папка это файл?
    #39996500
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
petrav
andron81,

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


в юникс можно. а тут фигвам ...

Где он этот юникс? Забей на это упражнение, эта тема нынче очень устарела, подход работы с папками в корне поменялся, потому не работает. Переходи к следующему упражнению.
...
Рейтинг: 0 / 0
папка это файл?
    #39996502
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Переходи к следующему упражнению.

+1
На данном этапе тоже советую автору делать упражнения из сети или книги.
Архитектура и "как лучше" - потом.
Главное набить руку писать код без ошибок.
...
Рейтинг: 0 / 0
папка это файл?
    #39996515
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
andron81
пропущено...


в юникс можно. а тут фигвам ...

Где он этот юникс? Забей на это упражнение, эта тема нынче очень устарела, подход работы с папками в корне поменялся, потому не работает. Переходи к следующему упражнению.


это одно из последних, скоро глупости закончатся с моей стороны тут. Цель упражнения не архитектура и низкоуровневый фарш. надо в этих рамках и проработать. а если поставить грубо говоря виртуальную машину Юникс .
...
Рейтинг: 0 / 0
папка это файл?
    #39996522
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81
а если поставить грубо говоря виртуальную машину Юникс .

Попробуй, только где его взять? Умер он давно.
https://qastack.ru/unix/33750/is-there-a-way-to-download-pure-unix Unix как отдельная сущность не существует как современная операционная система.

Как указано в комментариях для unix-производных:

Несколько систем начинали с исходного кода Unix, но со временем он был записан, поэтому оригинальный код Unix не сохранился. Наиболее известными примерами являются OpenSolaris, FreeBSD, NetBSD и OpenBSD.

...

Современные дистрибутивы не содержат какого-либо оригинального кода Unix или, по крайней мере, ни одного из свободно доступных вариантов с открытым исходным кодом.
...
Рейтинг: 0 / 0
25 сообщений из 230, страница 1 из 10
Форумы / C++ [игнор отключен] [закрыт для гостей] / папка это файл?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]