乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
C 2.14 Linux函数库utsname.h,pwd.h,grp.h
2018-06-17 08:23:04
60
0
0
admin
> 获取unix 上的信息 #sys/utsname ##struct ``` struct utsname { char sysname[9]; //操作系统名 char nodename[9]; //节点名 char release[9]; //操作系统大版本 char version[9]; //小版本 char machine[9]; //硬件名 }; ``` ##函数 **int uname(struct utsname *name)**: 失败返回-1 *** *** #pwd ##struct ```c struct passwd{ char *pw_name; //用户名 char *pw_passwd; //加密口令 uid_t pw_uid; //用户ID gid_t pw_gid; //组ID char *pw_gecos; //注释字段 char *pw_dir; //初始工作目录 char *pw_shell; //初始shell }; ``` *** ##函数 ###查询某一用户的信息 **struct passwd *getpwuid(uid_t uid)**: 通过uid 获取信息,失败返回NULL ``` #include <stdio.h> #include <sys/types.h> #include <pwd.h> main() { struct passwd *pw; pw = getpwuid(0); printf("%s\n",pw->pw_name); } ``` **struct passwd *getpwnam(const char *name)**: 通过用户名获取信息,失败返回NULL *** ###查询所有用户的信息 **struct passwd *getpwent(void)**: 每运行一次返回一个用户信息,出错或者没有新用户了就返回NULL(可以理解成打开/etc/passwd文件后一行一行读) **void setpwent(void)**: 从头开始一个用户一个用户的显示(可以理解成把指针指回/etc/passwd开始位置) **void endpwent(void)**: 结束查询(可以理解成关闭/etc/passwd 文件句柄) ``` #include <stdio.h> #include <sys/types.h> #include <pwd.h> main() { struct passwd *pw; setpwent(); //保护措施,防止之前跑过getpwent()却没有跑过endpwent() while((pw=getpwent()) != NULL ) { printf("%s\n",pw->pw_name); } endpwent(); }; ``` *** *** #grp ##struct ``` struct group{ char *gr_name; //组名 char *gr_passwd; //加密口令 int gr_gid; //组ID char **gr_mem; //指向各用户名指针的数组 } ``` *** ##函数 ###查询某一组的信息 **struct group *getgrgid(gid_t gid)**: 通过组ID 查询信息,失败返回NULL **struct group *getgrnam(const chnar *name)**: 通过组名查询信息,失败返回NULL *** ###查询所有组信息 **struct group *getgrent(void)**:一个接一个的返回组信息,出错了或者没有新组了就返回NULL(可以理解成打开/etc/group 文件后一行一行读) **void setgrent(void)**: 从头开始一个接一个组的显示(可以理解成把指针指回/etc/group) **void endgrent(void)**: 结束查询(可以理解成关闭/etc/group 文件句柄)
上一篇:
C 2.13 函数库setjmp.h
下一篇:
C 2.15 Linux函数库time.h
文档导航