Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       glob, globfree - ищет имена путей по шаблону, освобождает память после glob()

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <glob.h>

       int glob(const char *restrict pattern, int flags,
                int (*errfunc)(const char *epath, int eerrno),
                glob_t *restrict pglob);
       void globfree(glob_t *pglob);

ОПИСАНИЕ

       Функция  glob()  ищет  все  совпадения  имён  путей  с  заданным  шаблоном  pattern,  согласно  правилам,
       используемым оболочкой (смотрите glob(7)). Расширения тильды или подстановка параметров  не  выполняется;
       если это нужно, то используйте wordexp(3).

       Функция globfree() освобождает динамически выделенное хранилище, полученное в последнем вызове glob().

       Результаты  вызова  glob()  сохраняются  в структуре, на которую указывает pglob. Эта структура имеет тип
       glob_t (объявлен в <glob.h>) и содержит следующие элементы, определённые  в  POSIX.2  (их  может  быть  и
       больше, в виде расширений):

           typedef struct {
               size_t   gl_pathc;    /* количество совпавших путей  */
               char   **gl_pathv;    /* список совпавших имён путей.  */
               size_t   gl_offs;     /* зарезервированные в gl_pathv слоты.  */
           } glob_t;

       Результаты размещаются в динамически выделяемом хранилище.

       Значение параметра flags формируется побитовым сложением нуля или более следующих символических констант,
       которые меняют ход работы glob():

       GLOB_ERR
              Выполнять  возврат при ошибке чтения (например, нет прав для чтения каталога). По умолчанию glob()
              пытается продолжить работу не смотря на ошибки, читая все каталоги, которые может.

       GLOB_MARK
              Добавлять косую черту к каждому пути, который соответствует каталогу.

       GLOB_NOSORT
              Не  сортировать  возвращаемые  имена.  Это  экономит  процессорное  время.  По   умолчанию   имена
              сортируются.

       GLOB_DOOFFS
              Резервировать  слоты  pglob->gl_offs у начала списка строк в pglob->pathv. Зарезервированные слоты
              содержат указатели null.

       GLOB_NOCHECK
              Если не найдено совпадений по шаблону,  возвращать  в  качестве  результата  заданный  шаблон.  По
              умолчанию при отсутствии совпадений glob() возвращает GLOB_NOMATCH.

       GLOB_APPEND
              Добавлять  результаты  вызова  к вектору результатов, полученному от предыдущего вызова glob(). Не
              следует включать этот флаг при первом вызове glob().

       GLOB_NOESCAPE
              Don't allow backslash ('\') to be used as an escape character.  Normally, a backslash can be  used
              to  quote  the  following  character,  providing  a  mechanism  to  turn  off  the special meaning
              metacharacters.

       В flags также могу быть включены следующие флаги, которые  являются  расширениями  GNU  и  отсутствуют  в
       POSIX.2:

       GLOB_PERIOD
              Разрешить  начальной  точке  соответствовать  метасимволам.  По умолчанию метасимволы не считаются
              совпадающими с начальной точкой.

       GLOB_ALTDIRFUNC
              Для  доступа  к  файловой  системе  использовать  функции  pglob->gl_closedir,  pglob->gl_readdir,
              pglob->gl_opendir, pglob->gl_lstat и pglob->gl_stat вместо стандартных библиотечных функций.

       GLOB_BRACE
              Раскрывать  выражения  в  фигурных скобках {a,b} аналогичны используемым в csh(1). Выражения могут
              быть  вложенными.  То  есть,  например,  по  шаблону  "{foo/{,cat,dog},bar}"  возвращаются  те  же
              результаты  что и при четырёх отдельных вызовах glob() со строками: "foo/", "foo/cat", "foo/dog" и
              "bar".

       GLOB_NOMAGIC
              Возвращать сам шаблон, если в нём не содержатся метасимволы, даже при  отсутствии  файла  с  таким
              именем.

       GLOB_TILDE
              Carry  out  tilde expansion.  If a tilde ('~') is the only character in the pattern, or an initial
              tilde is followed immediately by a  slash  ('/'),  then  the  home  directory  of  the  caller  is
              substituted  for  the tilde.  If an initial tilde is followed by a username (e.g., "~andrea/bin"),
              then the tilde and username are substituted by the home directory of that user.  If  the  username
              is invalid, or the home directory cannot be determined, then no substitution is performed.

       GLOB_TILDE_CHECK
              Поведение  подобно  GLOB_TILDE.  Отличие в том, что если имя пользователя некорректно или домашний
              каталог невозможно определить, то вместо использования самого шаблона как имени, glob() возвращает
              GLOB_NOMATCH для указания на ошибку.

       GLOB_ONLYDIR
              Это только указание glob() на то, что  вызывающего  интересуют  только  каталоги,  соответствующие
              шаблону.  Если  реализация может легко определить информацию о типе файла, то файлы не каталоги не
              возвращаются вызывающему. Однако, вызывающий всё равно должен проверять, что  полученные  файлы  —
              каталоги  (назначение  этого  флага  —  все  лишь  оптимизация  производительности в случае, когда
              вызывающему нужны только каталоги).

       Если errfunc не равно NULL, то в случае ошибки она будет вызвана с параметрами epath (указатель на  путь,
       в котором произошла ошибка) и eerrno (полученное значение errno после вызова одной из функций opendir(3),
       readdir(3)  или  stat(2)).Если  errfunc  вернёт  ненулевое значение или если флаг GLOB_ERR установлен, то
       glob() закончит работу после вызова errfunc.

       При успешном выполнении в pglob->gl_pathc  содержится  количество  совпадающих  имён,  а  pglob->gl_pathv
       содержит  указатель  на  список  указателей  на найденные имена. Список указателей завершается указателем
       null.

       Вызов glob() может выполняться несколько раз. В этом случае флаг GLOB_APPEND должен быть включён в  flags
       при втором и последующих вызовах.

       Как  расширение  GNU, при обнаружении метасимволов pglob->gl_flags — набор задаваемых флагов, сложенный с
       GLOB_MAGCHAR (с помощью операции ИЛИ).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       При успешном выполнении glob() возвращает ноль. Другие возможные возвращаемые значения:

       GLOB_NOSPACE
              занята вся свободная память

       GLOB_ABORTED
              ошибка чтения

       GLOB_NOMATCH
              не найдено совпадений с шаблоном

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).
       ┌────────────┬──────────────────────┬───────────────────────────────────────────────────────────────────┐
       │ ИнтерфейсАтрибутЗначение                                                          │
       ├────────────┼──────────────────────┼───────────────────────────────────────────────────────────────────┤
       │ glob()     │ Безвредность в нитях │ MT-Unsafe race:utent env sig:ALRM timer locale                    │
       ├────────────┼──────────────────────┼───────────────────────────────────────────────────────────────────┤
       │ globfree() │ Безвредность в нитях │ MT-Safe                                                           │
       └────────────┴──────────────────────┴───────────────────────────────────────────────────────────────────┘

       В приведённой выше  таблице  utent  в  race:utent  означает,  что  если  любая  из  функций  setutent(3),
       getutent(3)  или  endutent(3) используется одновременно в нескольких нитях программы, то может возникнуть
       состязательность по данным. Эти функции вызываются  из  glob(),  поэтому  мы  используем  race:utent  для
       напоминания.

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

       POSIX.1-2001, POSIX.2.

ПРИМЕЧАНИЯ

       Элементы  структуры  gl_pathc  и  gl_offs объявлены с типом size_t в glibc 2.1 (как и должны указываться,
       согласно POSIX.2), но указаны как int в glibc 2.0.

ОШИБКИ

       Функция glob() может завершиться с  ошибкой  из-за  ошибок  в  используемых  её  функций:  malloc(3)  или
       opendir(3). Эти функции записывают коды своих ошибок в переменную errno.

ПРИМЕРЫ

       Пример использования приводится ниже, в нём имитируется набор строки

           ls -l *.c ../*.c

       в оболочке:

           glob_t globbuf;

           globbuf.gl_offs = 2;
           glob("*.c", GLOB_DOOFFS, NULL, &globbuf);
           glob("../*.c", GLOB_DOOFFS | GLOB_APPEND, NULL, &globbuf);
           globbuf.gl_pathv[0] = "ls";
           globbuf.gl_pathv[1] = "-l";
           execvp("ls", &globbuf.gl_pathv[0]);

СМОТРИТЕ ТАКЖЕ

       ls(1), sh(1), stat(2), exec(3), fnmatch(3), malloc(3), opendir(3), readdir(3), wordexp(3), glob(7)

ПЕРЕВОД

       Русский  перевод  этой  страницы  руководства  разработал(и) Azamat Hackimov <azamat.hackimov@gmail.com>,
       Dmitry  Bolkhovskikh   <d20052005@yandex.ru>,   Vladislav   <ivladislavefimov@gmail.com>,   Yuri   Kozlov
       <yuray@komyakino.ru>, Иван Павлов <pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                  15 июня 2024 г.                                         glob(3)