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.

Nota: Si el atributo domainlessgroups está establecido en el archivo /etc/secvars.cfg , la subrutina getgrgid_r obtiene información de grupo de los dominios de Lightweight Directory Access Protocol y archivos, si el ID de grupo pertenece a cualquiera de estos dominios.

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.