glob

Autres langues

Langue: ja

Version: 1999-09-12 (openSuse - 09/10/07)

Autres sections - même nom

Section: 3 (Bibliothèques de fonctions)

̾Á°

glob, globfree - ¥Ñ¥¿¡¼¥ó¤Ë¥Þ¥Ã¥Á¤¹¤ë¥Ñ¥¹Ì¾¤ò¸«ÉÕ¤±¤ë¡£glob() ¤Ë¤è¤Ã ¤Æ³ÎÊݤµ¤ì¤¿¥á¥â¥êÎΰè¤ò²òÊü¤¹¤ë¡£

½ñ¼°


#include <glob.h>



int glob(const char *pattern, int flags,


int (*errfunc) (const char *epath, int eerrno),
glob_t *pglob);
void globfree(glob_t *pglob);

ÀâÌÀ

glob() ´Ø¿ô¤Ï¥·¥§¥ë¤¬ÍѤ¤¤Æ¤¤¤ë¥ë¡¼¥ë¡Ê glob(7) »²¾È¡Ë¤Ë´ð¤Å¤¤¤Æ¥Ñ¥¿¡¼¥ó pattern ¤Ë¥Þ¥Ã¥Á¤¹¤ë¤¹¤Ù¤Æ¤Î¥Ñ¥¹Ì¾¤ò¸¡º÷¤¹¤ë¡£ ¥Á¥ë¥À (~) ¤ÎŸ³«¤ä¥Ñ¥é¥á¡¼¥¿ÃÖ´¹¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£¤½¤ì¤é¤ò¹Ô¤¤¤¿¤¤¾ì¹ç¤Ï wordexp(3) ¤ò»È¤¦¤È¤è¤¤¡£

globfree() ´Ø¿ô¤ÏÁ°¤Ë¸Æ¤Ð¤ì¤¿ glob() ¤Ë¤è¤êưŪ¤Ë³ÎÊݤµ¤ì¤¿µ­²±Îΰè¤ò²òÊü¤¹¤ë¡£

glob() ¤Î·ë²Ì¤Ï pglob ¤¬¥Ý¥¤¥ó¥È¤¹¤ë¹½Â¤ÂΤËÊÖ¤µ¤ì¤ë¡£ pglob ¤Ï glob_t ·¿¤Î¹½Â¤ÂΤǤ¢¤ë¡£ glob_t ·¿¤Ï <glob.h> Æâ¤ÇÀë¸À¤µ¤ì¤Æ¤ª¤ê¡¢°Ê²¼¤ÎÍ×ÁǤò´Þ¤ó¤Ç¤¤¤ë¡£¤³¤ì¤é¤ÎÍ×ÁÇ¤Ï POSIX.2 ¤ÇÄêµÁ ¤µ¤ì¤Æ¤¤¤ë¡Ê¤µ¤é¤Ë¿¤¯¤ÎÍ×ÁǤ¬³ÈÄ¥¤È¤·¤ÆÆþ¤Ã¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡Ë¡£



typedef struct {

    size_t   gl_pathc;    /* º£¤Þ¤Ç¤Ë¥Þ¥Ã¥Á¤·¤¿¥Ñ¥¹¤Î¿ô */

    char   **gl_pathv;    /* ¥Þ¥Ã¥Á¤·¤¿¥Ñ¥¹Ì¾¤Î¥ê¥¹¥È */

    size_t   gl_offs;     /* `gl_pathv' Æâ¤Ë³ÎÊݤ¹¤ë¤¿¤á¤Î¥¹¥í¥Ã¥È */

} glob_t;

·ë²Ì¤ÏưŪ¤Ë³ÎÊݤµ¤ì¤¿µ­²±Îΰè¤ËÆþ¤ì¤é¤ì¤ë¡£

¥Ñ¥é¥á¡¼¥¿ flags ¤Ë¤Ï°Ê²¼¤Î¼¨¤¹Äê¿ô¤Î¤¦¤Á¡¢»ØÄꤷ¤¿¤¤¤â¤Î¤ò¥Ó¥Ã¥È¤´¤È¤Î OR ¤ÇÍ¿¤¨¤ë¡Ê°ì¤Ä¤â »ØÄꤷ¤Ê¤¯¤Æ¤â¤è¤¤¡Ë¡£¤³¤ì¤Ë¤è¤Ã¤Æ glob() ¤ÎÆ°ºî¤òÊѹ¹¤Ç¤­¤ë¡£

GLOB_ERR
Æɤ߼è¤ê¥¨¥é¡¼»þ¡ÊÎ㤨¤Ð¡¢¥Ç¥£¥ì¥¯¥È¥ê¤ËÆɤ߼è¤êµö²Ä°À­¤¬Ìµ¤¤¾ì¹ç¤Ê¤É¡Ë ¤Ë´Ø¿ô¤«¤éÌá¤ë¡£
GLOB_MARK
¥Ç¥£¥ì¥¯¥È¥ê¤Ë°ìÃפ¹¤ë³Æ¡¹¤Î¥Ñ¥¹¤Ë¥¹¥é¥Ã¥·¥å¤òÉղ乤롣
GLOB_NOSORT
ÊÖ¤µ¤ì¤ë¥Ñ¥¹Ì¾¤Î¥½¡¼¥È¤ò¹Ô¤ï¤Ê¤¤¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë¡£
GLOB_DOOFFS
ʸ»úÎó¥ê¥¹¥È pglob->pathv ¤ÎÀèƬ¤Ë pglob->gl_offs ¸Äʬ¤ÎÎΰè¤ò³ÎÊݤ¹¤ë¡£
GLOB_NOCHECK
¥Þ¥Ã¥Á¤¹¤ë¥Ñ¥¿¡¼¥ó¤¬Ìµ¤±¤ì¤Ð¡¢¸µ¤Î¥Ñ¥¿¡¼¥ó¤òÊÖ¤¹¡£
GLOB_APPEND
Á°¤Î¸Æ¤Ó½Ð¤·¤Î·ë²Ì¤ËÄɲ乤롣ºÇ½é¤Î glob() ¤Î¸Æ¤Ó½Ð¤·¤ÎºÝ¤Ë¤Ï¤³¤Î¥Õ¥é¥°¤òÀßÄꤷ¤Æ¤Ï¤¤¤±¤Ê¤¤¡£
GLOB_NOESCAPE
¥á¥¿¥­¥ã¥é¥¯¥¿¤Ï¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ë¤è¤Ã¤Æ¥¯¥©¡¼¥È¤µ¤ì¤Ê¤¤¡£

¥Õ¥é¥°¤Ë¤Ï°Ê²¼¤Ë¼¨¤¹¤â¤Î¤â»ØÄê¤Ç¤­¤ë¡£¤³¤ì¤é¤Ï POSIX.2 ¤Ç¤ÏÄêµÁ¤µ¤ì¤Æ¤¤ ¤Ê¤¤¤¬ GNU ¤Ç³ÈÄ¥¤µ¤ì¤¿¤â¤Î¤Ç¤¢¤ë¡£

GLOB_PERIOD
ÀèƬ¤Î¥Ô¥ê¥ª¥É¤Ï¥á¥¿¥­¥ã¥é¥¯¥¿¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£
GLOB_ALTDIRFUNC
¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¥¢¥¯¥»¥¹¤¹¤ëºÝ¤Ë¡¢Ä̾ï¤Î¥é¥¤¥Ö¥é¥ê´Ø¿ô¤ÎÂå¤ï¤ê¤Ë pglob->gl_closedir, pglob->gl_readdir, pglob->gl_opendir, pglob->gl_lstat, pglob->gl_stat ¤¬ÍѤ¤¤é¤ì¤ë¡£
GLOB_BRACE
csh(1) ¥¹¥¿¥¤¥ë¤Î³ç¸Ìɽ¸½ {a,b} ¤¬Å¸³«¤µ¤ì¤ë¡£
GLOB_NOMAGIC
¥Ñ¥¿¡¼¥ó¤Ë¥á¥¿¥­¥ã¥é¥¯¥¿¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤½¤Î¥Ñ¥¿¡¼¥ó¤¬ÊÖ¤µ¤ì¤ë¡£
GLOB_TILDE
¥Á¥ë¥À (~) ¤ÎŸ³«¤¬¹Ô¤ï¤ì¤ë¡£
GLOB_ONLYDIR
¥Ç¥£¥ì¥¯¥È¥ê¤Î¤ß¤¬¥Þ¥Ã¥Á¤¹¤ë¡£

errfunc ¤¬ NULL ¤Ç¤Ê¤±¤ì¤Ð¡¢ ¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¾ì¹ç¤Ë¤Ï´Ø¿ô errfunc ¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¡£´Ø¿ô¤Î°ú¿ô¤Ë¤Ï¡¢¼ºÇÔ¤·¤¿¥Ñ¥¹Ì¾ epath ¤È errno (opendir(3), readdir(3), stat(2). ¤Î¤¤¤º¤ì¤«¤Ë¤è¤Ã¤Æ¥»¥Ã¥È¤µ¤ì¤¿Ã͡ˤ¬Í¿¤¨¤é¤ì¤ë¡£ errfunc ¤¬ 0 °Ê³°¤ÎÃͤòÊÖ¤¹¤«¤â¤·¤¯¤Ï GLOB_ERR ¤¬¥»¥Ã¥È¤µ¤ì¤¿¾ì¹ç glob() ¤Ï errfunc ¤Î¸Æ¤Ó½Ð¤·¸å¤Ë½ªÎ»¤¹¤ë¡£

¸Æ¤Ó½Ð¤·¤¬À®¸ù¤·¤ÆÌá¤Ã¤¿¾ì¹ç pglob->gl_pathc ¤Ë¤Ï¥Þ¥Ã¥Á¤·¤¿¥Ñ¥¹Ì¾¤¬´Þ¤Þ¤ì¡¢ pglob->gl_pathv ¤Ï¥Þ¥Ã¥Á¤·¤¿¥Ñ¥¹Ì¾¤Î¥ê¥¹¥È¤Ø¤Î¥Ý¥¤¥ó¥¿¤È¤Ê¤ë¡£ºÇ¸å¤Î¥Ñ¥¹Ì¾¤Î¸å¤ÎºÇ½é¤Î ¥Ý¥¤¥ó¥¿¤Ï NULL ¤Ç¤¢¤ë¡£

glob() ¤ò²¿ÅÙ¤«Â³¤±¤Æ¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤ë¡£¤½¤ÎºÝ2²óÌܰʹߤθƤӽФ·¤Ç¤Ï GLOB_APPEND ¥Õ¥é¥°¤¬ flags ¤ËÀßÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

GNU ¤Î³ÈÄ¥¤È¤·¤Æ¡¢ pglob->gl_flags ¤Ë¤Ï»ØÄꤷ¤¿¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£¤â¤·°ì¤Ä¤Ç¤â¥á¥¿¥­¥ã¥é¥¯¥¿¤¬¸«ÉÕ¤«¤ì¤Ð ¤³¤Î¥Õ¥é¥°¤È GLOB_MAGCHAR ¤È¤Î OR ¤ò¼è¤Ã¤¿·ë²Ì¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£

ÊÖ¤êÃÍ

¸Æ¤Ó½Ð¤·¤¬À®¸ù¤·¤Æ´°Î»¤¹¤ë¤È glob() ¤Ï 0 ¤òÊÖ¤¹¡£ ¤½¤ì°Ê³°¤ÎÊÖ¤êÃͤϰʲ¼¤ÎÄ̤ê:
GLOB_NOSPACE
¥á¥â¥ê¤ò»È¤¤²Ì¤¿¤·¤¿
GLOB_ABORTED
Æɤ߼è¤ê¥¨¥é¡¼
GLOB_NOMATCH
°ì¤Ä¤â¥Þ¥Ã¥Á¤·¤Ê¤«¤Ã¤¿

½àµò

POSIX.2, POSIX.1-2001.

Ãí°Õ

glibc 2.1 ¤Ç¤Ï¡¢ gl_pathc ¤È gl_offs ¤Ï POSIX.2 ¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë size_t ¤È¤·¤ÆÀë¸À¤µ¤ì¤Æ¤¤¤ë¡£ libc4, libc5, glibc 2.0 ¤Ç¤Ï¡¢ int ¤È¤·¤ÆÀë¸À¤µ¤ì¤Æ¤¤¤ë¡£

¥Ð¥°

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)