C ++ программа для подсчета количества объектов в определенном каталоге Linux - PullRequest
1 голос
/ 20 сентября 2010

Я пытаюсь написать программу для Linux на C ++, которая подсчитывает количество файлов и папок в указанной пользователем директории, но чем больше я читаю, тем больше путаюсь.Я новичок в C ++ и в программировании в целом, и я понимаю, что у меня есть большое препятствие на пути к хранилищу с самого начала, но я не совсем уверен, с чего начать читать об этом.Я немного читал о разветвлении процессов и системных вызовов, но если бы кто-то кратко обрисовал процесс, который мне нужно пройти, чтобы достичь этого, я сам смог бы глубже прочитать различные функции.

Ответы [ 4 ]

4 голосов
/ 20 сентября 2010

С C ++ Boost.FileSystem предоставляет вам удобные инструменты для достижения того, что вы хотите.

Если вы хотите изучить основные API C, взгляните на Интерфейс файловой системы в руководстве по библиотеке GNU C.

3 голосов
/ 20 сентября 2010

Если вы действительно хотите сделать это по-Linux, взгляните на системные вызовы opendir, readdir и closedir.Вот пример здесь , который в основном является программой, которую вы пытаетесь написать (хотя она печатает содержимое, а не подсчитывает их).

На вашем месте я бы придерживался более высокойбиблиотека высокого уровня, как предложил Георг.

0 голосов
/ 20 сентября 2010

Самый простой и кроссплатформенный способ сделать это - boost :: filesystem . В UNIX (Linux, Mac OS X, Free BSD и т. Д.) Есть несколько способов сделать это. Как уже указывалось, opendir , readdir и closedir являются возможными. Я должен указать, что вместо использования readdir лучше использовать readdir_r , который является реентерабельным (это означает, что безопасно использовать одновременно из нескольких разных потоков), тогда как обычный вызов readdir не реентерабелен и, следовательно, не гарантируется единой спецификацией UNIX / IEEE Std. 1003.1, также известной как POSIX, для обеспечения безопасности потоков. Хотя они могут быть не самыми простыми в использовании и не подходящими для данной конкретной задачи, для других действий, обходящих файловую систему, вас могут также заинтересовать nftw и ftw , которые особенно хорошо подходит для работы с поддеревьями файловой системы.

0 голосов
/ 20 сентября 2010

В * nix вы можете использовать функции библиотеки C opendir и readdir

Обычно вызывается opendir (), чтобы получить указатель на каталог. Перебирайте записи в этом каталоге с помощью readdir ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...