Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


glob(3) — Linux manual page

NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ATTRIBUTES |STANDARDS |HISTORY |NOTES |BUGS |EXAMPLES |SEE ALSO |COLOPHON

glob(3)                  Library Functions Manualglob(3)

NAME        top

       glob, globfree - find pathnames matching a pattern, free memory       from glob()

LIBRARY        top

       Standard C library (libc,-lc)

SYNOPSIS        top

#include <glob.h>int glob(const char *restrictpattern, intflags,typeof(int (const char *epath, inteerrno)) *errfunc,glob_t *restrictpglob);void globfree(glob_t *pglob);

DESCRIPTION        top

       Theglob() function searches for all the pathnames matchingpattern according to the rules used by the shell (seeglob(7)).       No tilde expansion or parameter substitution is done; if you want       these, usewordexp(3).       Theglobfree() function frees the dynamically allocated storage       from an earlier call toglob().       The results of aglob() call are stored in the structure pointed       to bypglob.  This structure is of typeglob_t (declared in<glob.h>) and includes the following elements defined by POSIX.2       (more may be present as an extension):           typedef struct {               size_t   gl_pathc;    /* Count of paths matched so far  */               char   **gl_pathv;    /* List of matched pathnames.  */               size_t   gl_offs;     /* Slots to reserve ingl_pathv.  */           } glob_t;       Results are stored in dynamically allocated storage.       The argumentflags is made up of the bitwise OR of zero or more       the following symbolic constants, which modify the behavior ofglob():GLOB_ERR              Return upon a read error (because a directory does not have              read permission, for example).  By default,glob() attempts              carry on despite errors, reading all of the directories              that it can.GLOB_MARK              Append a slash to each path which corresponds to a              directory.GLOB_NOSORT              Don't sort the returned pathnames.  The only reason to do              this is to save processing time.  By default, the returned              pathnames are sorted.GLOB_DOOFFS              Reservepglob->gl_offs slots at the beginning of the list              of strings inpglob->pathv.  The reserved slots contain              null pointers.GLOB_NOCHECK              If no pattern matches, return the original pattern.  By              default,glob() returnsGLOB_NOMATCHif there are no              matches.GLOB_APPEND              Append the results of this call to the vector of results              returned by a previous call toglob().  Do not set this              flag on the first invocation ofglob().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 may also include any of the following, which are GNU       extensions and not defined by POSIX.2:GLOB_PERIOD              Allow a leading period to be matched by metacharacters.  By              default, metacharacters can't match a leading period.GLOB_ALTDIRFUNC              Use alternative functionspglob->gl_closedir,pglob->gl_readdir,pglob->gl_opendir,pglob->gl_lstat, andpglob->gl_stat for filesystem access instead of the normal              library functions.GLOB_BRACE              Expandcsh(1) style brace expressions of the form{a,b}.              Brace expressions can be nested.  Thus, for example,              specifying the pattern "{foo/{,cat,dog},bar}" would return              the same results as four separateglob() calls using the              strings: "foo/", "foo/cat", "foo/dog", and "bar".GLOB_NOMAGIC              If the pattern contains no metacharacters, then it should              be returned as the sole matching word, even if there is no              file with that name.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              This provides behavior similar to that ofGLOB_TILDE.  The              difference is that if the username is invalid, or the home              directory cannot be determined, then instead of using the              pattern itself as the name,glob() returnsGLOB_NOMATCHto              indicate an error.GLOB_ONLYDIR              This is ahint toglob() that the caller is interested only              in directories that match the pattern.  If the              implementation can easily determine file-type information,              then nondirectory files are not returned to the caller.              However, the caller must still check that returned files              are directories.  (The purpose of this flag is merely to              optimize performance when the caller is interested only in              directories.)       Iferrfunc is not NULL, it will be called in case of an error with       the argumentsepath, a pointer to the path which failed, andeerrno, the value oferrno as returned from one of the calls toopendir(3),readdir(3), orstat(2).  Iferrfunc returns nonzero,       or ifGLOB_ERRis set,glob() will terminate after the call toerrfunc.       Upon successful return,pglob->gl_pathc contains the number of       matched pathnames andpglob->gl_pathv contains a pointer to the       list of pointers to matched pathnames.  The list of pointers is       terminated by a null pointer.       It is possible to callglob() several times.  In that case, theGLOB_APPENDflag has to be set inflags on the second and later       invocations.       As a GNU extension,pglob->gl_flags is set to the flags specified,ored withGLOB_MAGCHARif any metacharacters were found.

RETURN VALUE        top

       On successful completion,glob() returns zero.  Other possible       returns are:GLOB_NOSPACE              for running out of memory,GLOB_ABORTED              for a read error, andGLOB_NOMATCH              for no found matches.

ATTRIBUTES        top

       For an explanation of the terms used in this section, seeattributes(7).       ┌────────────┬───────────────┬───────────────────────────────────┐       │InterfaceAttributeValue│       ├────────────┼───────────────┼───────────────────────────────────┤       │glob()     │ Thread safety │ MT-Unsafe race:utent env sig:ALRM │       │            │               │ timer locale                      │       ├────────────┼───────────────┼───────────────────────────────────┤       │globfree() │ Thread safety │ MT-Safe                           │       └────────────┴───────────────┴───────────────────────────────────┘       In the above table,utent inrace:utent signifies that if any of       the functionssetutent(3),getutent(3), orendutent(3) are used in       parallel in different threads of a program, then data races could       occur.glob() calls those functions, so we use race:utent to       remind users.

STANDARDS        top

       POSIX.1-2008.

HISTORY        top

       POSIX.1-2001, POSIX.2.

NOTES        top

       The structure elementsgl_pathc andgl_offs are declared assize_t       in glibc 2.1, as they should be according to POSIX.2, but are       declared asint in glibc 2.0.

BUGS        top

       Theglob() function may fail due to failure of underlying function       calls, such asmalloc(3) oropendir(3).  These will store their       error code inerrno.

EXAMPLES        top

       One example of use is the following code, which simulates typing           ls -l *.c ../*.c       in the shell:           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]);

SEE ALSO        top

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

COLOPHON        top

       This page is part of theman-pages (Linux kernel and C library       user-space interface documentation) project.  Information about       the project can be found at        ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report       for this manual page, see       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.       This page was obtained from the tarball man-pages-6.15.tar.gz       fetched from       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on       2025-08-11.  If you discover any rendering problems in this HTML       version of the page, or you believe there is a better or more up-       to-date source for the page, or you have corrections or       improvements to the information in this COLOPHON (which isnot       part of the original manual page), send a mail to       man-pages@man7.orgLinux man-pages 6.15            2025-05-17glob(3)

Pages that refer to this page:locate(1)tar(1)fnmatch(3)wordexp(3)glob(7)pcilib(7)uri(7)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp