侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 238 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

getgrent函数用法详解

noerror
2022-11-09 / 0 评论 / 0 点赞 / 18 阅读 / 571 字 / 正在检测是否收录...

getgrent函数用法详解

getgrent函数简介

  • 头文件包含
#include <sys/types.h>
#include <grp.h>
  • 函数定义
struct group *getgrent(void);
void setgrent(void);
void endgrent(void);

getgrent函数常见使用错误

  • 编译错误
    warning: implicit declaration of function ‘getgrent’ [-Wimplicit-function-declaration]
    解决办法:包含头文件
#include <sys/types.h>
#include <grp.h>

getgrent函数详细描述

getgrent ()函数返回一个指向结构的指针,该结构包含组数据库中记录的分段字段(例如,本地组文件/etc/group NIS和LDAP)。第一次调用getgrent ()时,它返回第一个条目;此后,它返回连续的条目。
setgrent ()函数倒回组数据库的开头,以允许重复扫描。
endgrent ()函数用于在执行所有处理后关闭组数据库。
中的group结构定义如下:

struct group {
   char   *gr_name;        /* group name */
   char   *gr_passwd;      /* group password */
   gid_t   gr_gid;         /* group ID */
   char  **gr_mem;         /* NULL-terminated array of pointers
                              to names of group members */
};

有关此结构的字段的更多信息,请参见group (5)

getgrent函数返回值

getgrent ()函数返回指向group结构的指针,如果没有更多条目或发生错误,则返回NULL。
出错时,可设置errno。如果想在调用后检查errno,应该在调用前将其设置为零。
返回值可能指向静态区域,并且可能被对getgrent ()、getgrgid (3)或getgrnam (3)的后续调用覆盖(不要将返回的指针传递给free (3))

getgrent函数错误码

  • EAGAIN 服务暂时不可用;请稍后再试。对于glibc中的NSS后端,这表示与后端对话时出现临时错误。错误可能会自行纠正,建议稍后重试。
  • EINTR 捕获了一个信号;参见signal (7)
  • EIO I/O错误。
  • EMFILE 已达到每个进程打开的文件描述符的数量限制。
  • ENFILE 已达到系统范围内打开文件总数的限制。
  • ENOENT 找不到必要的输入文件。对于glibc中的NSS后端,这表明后端配置不正确。
  • ENOMEM 内存不足,无法分配group结构。
  • ERANGE 提供的缓冲区空间不足。
0

评论区