getgrent

http://baike.baidu.com/link?url=JNyoNvukL-LP7ayYlNNWLv2gPOzn-bjiwuX1CE_QwUTyrRGCWu4NhDW-JznHQoG4aIfwaA2iohylA5iqVG2PIq

getgrent

头文件

编辑

#include<grp.h>

#include <sys/types.h>

函数原型

编辑

struct group *getgrent(void);

函数说明

编辑

getgrent()用来从组文件(/etc/group)中读取一项组数据,该数据以group结构返回。第一次调用时会取得第一项组数据,之后每调用一次就会返回下一项数据,直到已无任何数据时返回NULL。

struct group{

char *gr_name; /*组名称*/

char *gr_passwd; /* 组密码*/

gid_t gr_gid; /*组识别码*/

char **gr_mem; /*组成员账号*/

}

返回group结构数据,如果返回NULL则表示已无数据,或有错误发生。getgrent()在第一次调用时会打开组文件,读取数据完毕后可使用endgrent()来关闭该组文件。ENOMEM 内存不足,无法配置group结构。

范例

编辑

#include<grp.h>

#include<sys/types.h>

main()

{

struct group *data;

int i;

while((data= getgrent())!=0){

i=0;

printf(“%s:%s:%d:”,data->gr_name,data->gr_passwd,data->gr_gid);

while(data->gr_mem[i])printf(“%s,”,data->gr_mem[i++]);

printf(“\n”);

}

endgrent();

}

时间: 2024-10-14 19:37:03

getgrent的相关文章

APUE读书笔记-第六章 系统数据文件和信息

昨天看完了,今天来看看第六章.感觉第六章的内容不是非常重要.简单看看吧 6.2 口令文件 口令文件其实就是/etc文件夹下的passwd文件,但处于安全性的考虑,我们无法直接读取它.就是通过直接限制权限的方式对其进行保护,passwd文件具体权限如下: -rw-r--r-- 1 root root 可以看到只有root用户具有读写权限,与root同组的用户与其他用户仅具有读权限. 不过为了解决以上问题,Linux中给出了一系列数据结构与函数帮助我们操纵口令文件,首先是关键数据结构,定义位于/in

linux NSS

名称 nss:nsswitch.conf:Name Service Switch 描述 配置文件:nsswitch.conf,使用GNU C库来确定从哪些类别中获取名称服务信息的源,以及按什么顺序排列.每一类信息都由数据库名标识. 该文件是纯ASCII文本,用空格或制表符分隔列.第一列指定数据库名.其余的列描述了查询源的顺序,以及可以通过查找结果执行的有限的操作集合. 以下数据库由GNU C库理解: aliases Mail aliases, used by getaliasent(3) and

《UNIX环境高级编程》读书笔记之系统数据文件和信息(1)

1.UNIX系统口令文件包括了下图所看到的的各字段,这些字段包括在<pwd.h>中定义的passwd结构体中 POSIX定义了两个获取口令文件项的函数. 在给出用户登录名或用户ID后.这两个函数就能查看相关项. #include <pwd.h> struct passwd *getpwuid(uid_t uid); struct passwd *getpwnam(const char *name); 假设想要查看整个口令文件,则要用到以下三个函数: #include <pwd

linux c常用函数

(1)字符测试函数 isalnum(测试字符是否为英文字母或数字) isalpha(测试字符是否为英文字母) isascii(测试字符是否为ASCII码字符) isblank(测试字符是否为空格字符) iscntrl(测试字符是否为ASCII码的控制字符) isdigit(测试字符是否为阿拉伯数字) isgraph(测试字符是否为可打印字符) islower(测试字符是否为小写英文字母) isprint(测试字符是否为可打印字符) isspace(测试字符是否为空格字符) ispunct(测试字

linux常用C函数目录

字符测试篇 isalnum isalpha isascii iscntrl isdigit isgraphis islower isprint isspace ispunct isupper isxdigit 字符串转换篇 atof atoi atol gcvt strtod strtol strtoul toascii tolower toupper 内存控制篇 calloc free getpagesize malloc mmap munmap 日期时间篇 asctime ctime get

用户组篇endgrent getpw getuid

endgrent(关闭组文件) 相关函数 getgrent,setgrent 表头文件 #include<grp.h> #include<sys/types.h> 定义函数 void endgrent(void); 函数说明 endgrent()用来关闭由getgrent()所打开的密码文件. 返回值 附加说明 范例 请参考getgrent()与setgrent(). endpwent(关闭密码文件) 相关函数 getpwent,setpwent 表头文件 #include<

UNIX系统文件

密码文件 密码文件又称用户数据库,一般为/etc/passwd,对应的结构为struct passwd,该文件内容大体如下: 描述 passwd字段 用户名 char* pw_name 加密密码 char* pw_passwd UID uid_t  pw_uid GID gid_t  pw_gid 注释 char* pw_gecos 初始工作目录 char* pw_dir shell char* pw_shell 加密密码一般一个字符,如果没有值说明该用户没有密码,这个字符只是表象,不是真正的加

10分钟入门opengl投影变换推导(内含mathjax公式)

*/ pre code { display: block; padding: 0.5em; color: #333; background: #f8f8ff } pre .comment, pre .template_comment, pre .diff .header, pre .javadoc { color: #998; font-style: italic } pre .keyword, pre .css .rule .keyword, pre .winutils, pre .javas

Linux编程---进程基础

进程这个概念大家都很熟悉了吧...我就不多说了.. 首先是进程环境.也就是Shell相关的内容. 这都是很基础的我就挑一些我自己都不太清楚的写写. 一.命令行参数 POSIX对命令行的语法约定: 1.实用程序名至少两个,至多9个字符,且只包含小写字母和数字.(Linux应该不止9个吧.我觉得这是Unix下shell的规定). 2.选项名必须是但个字母或者数字,-W选项保留给实现扩展使用,不允许多数字选项. 3.选项和它的选项值可以作为也可以不作为分开的单词.即-ofoo和-o foo是一样的..