Section: Manual del Programador de Linux (3)
Updated: 12 septiembre 1999
Index Return to Main
Contents
glob, globfree - encuentra nombres de caminos que concuerdan con un patrón, libera la memoria ocupada por glob()
#include <glob.h> int glob(const char *patron, int flags, int funcerr(const char * epath, int eerrno), glob_t *pglob); void globfree(glob_t *pglob);
La función glob() busca todos los nombres de camino de los ficheros que concuerden con patron según las reglas usadas por el interprete de comandos o shell. No se realiza ni expansión de la tilde (~) ni sustitución de parámetros; si quiere esto, use wordexp(3).
La función globfree() libera el almacenamiento alojado dinámicamente en una llamada anterior a glob().
Los resultados de una llamada a glob() se guardan en la estructura a la que apunte pglob, que es un glob_t que se declara en <glob.h> e incluye los siguientes elementos definidos por POSIX.2 (se pueden presentar más como extensiones):
typedef struct { size_t gl_pathc; /* Nº de caminos concordantes hasta ahora */ char **gl_pathv; /* Lista de los caminos concordantes. */ size_t gl_offs; /* Sitios a reservar en `gl_pathv'. */ } glob_t;
Los resultados se almacenan en memoria obtenida dinámicamente.
El parámetro flags se construye mediante un O-lógico de cero o más de las constantes simbólicas siguientes, que modifican el comportamiento de glob():
Las opciones también pueden incluir algunas de las siguientes constantes, que son extensiones GNU no definidar por POSIX.2:
Si funcerr no es NULL, se llamará en caso de error con los argumentos epath, un puntero al camino que ha fallado, y eerrno, el valor de errno según es devuelto por una de las llamadas a opendir(), readdir(), o stat(). Si funcerr devuelve no cero, o si GLOB_ERR está activado, glob() terminará justo tras la llamada a funcerr.
Tras un regreso con éxito de la función, pglob->gl_pathc contiene el número de nombres de caminos que han concordado y pglob->gl_pathv un puntero a la lista de nombres de caminos que han concordado. El primer puntero tras el último nombre de camino es NULL.
Es posible el llamar a glob() varias veces. En ese caso, la opción GLOB_APPEND tiene que estar activa en flags en la segunda llamada y posteriores.
Como extensión GNU, a pglob->gl_flags se le asignan las opciones especificadas, operadas mediante un O-lógico con GLOB_MAGCHAR si se encontró cualquier meta-carácter.
Tras una terminación con éxito, glob() devuelve cero. Otras posibles devoluciones son:
Un ejemplo del modo de empleo es el siguiente código, que simula la orden ls -l *.c ../*.c en el shell.
glob_t globbuf; globbuf.gl_offs = 2; glob("*.c", GLOB_DOOFS, NULL, &globbuf); glob("../*.c", GLOB_DOOFS | GLOB_APPEND, NULL, &globbuf); globbuf.gl_pathv[0] = "ls"; globbuf.gl_pathv[1] = "-l"; execvp("ls", &globbuf.gl_pathv[0]);
La función glob() puede fallar debido a un error en las funciones subyacentes, como malloc() u opendir(). Éstas guardarán su código de error en errno.
Los elementos de estructura gl_pathc y gl_offs se declaran como size_t en glibc 2.1, como deberían de acuerdo a POSIX.2, pero se declaran como int en libc4, libc5 y glibc 2.0.
(1), sh(1), stat(2), exec(3), malloc(3), opendir(3), readdir(3), wordexp(3),
This document was created by man2html, using
the manual pages.
Time: 06:16:25 GMT, January 22, 2005