Subrutina getgrgid_r
Finalidad
Obtiene una entrada de base de datos de grupo para un ID de grupo.
Biblioteca
Biblioteca C de hebra segura (libc_r.a)
Sintaxis
#include <sys/types.h>
#include <grp.h>
int getgrgid_r(gid_t gid,
struct group *grp,
char *buffer,
size_t bufsize,
struct group **result);Descripción
La subrutina getgrgid_r actualiza la estructura group a la que apunta grp y almacena un puntero a dicha estructura en la ubicación a la que apunta result. La estructura contiene una entrada de la base de datos de grupo con un gidcoincidente. El almacenamiento al que hace referencia la estructura de grupo se asigna a partir de la memoria proporcionada con el parámetro buffer , que tiene un tamaño de bufsize caracteres. El tamaño máximo necesario para este almacenamiento intermedio se puede determinar con el parámetro {_SC_GETGR_R_SIZE_MAX} sysconf . Se devuelve un puntero NULL en la ubicación a la que apunta result en caso de error o si no se encuentra la entrada solicitada.
Valores de retorno
Al completarse correctamente, getgrgid_r devuelve un puntero a un grupo de estructuras con la estructura definida en <grp.h> con una entrada coincidente si se encuentra una. La función getgrgid_r devuelve un puntero nulo si no se ha encontrado la entrada solicitada o se ha producido un error. En caso de error, errno se establecerá para indicar el error.
El valor de retorno apunta a un área estática sobrescrita por una llamada posterior a la subrutina getgrent, getgrgido getgrnam .
Si es satisfactorio, la función getgrgid_r devuelve cero. De lo contrario, se devuelve un número de error para indicar el error.
Códigos de error
La función getgrgid_r falla si:
| Elemento | Descripción |
|---|---|
| ERANGE | No se ha proporcionado suficiente almacenamiento a través de buffer y bufsize para contener los datos a los que hace referencia la estructura group resultante. |
Las aplicaciones que deseen comprobar si hay situaciones de error deben establecer errno en 0 antes de llamar a getgrgid_r. Si se establece errno al devolver, se ha producido un error.