第六章 系统数据文件和信息
来源:互联网 发布:php dom 教程 编辑:程序博客网 时间:2024/05/16 00:48
6.2 口令文件
和口令文件对应的字段包含在<pwd.h>的结构体passwd中。
#include<pwd.h>
struct passwd * getpwuid(uid_t uid);
struct passwd * getpwnam(const char * name); //两个函数的返回值:若成功则返回指针,若出错则返回NULL
如果要查看的只是登录名或用户ID,那么这两个POSIX.1函数能满足要求,但是也有些程序要查看整个口令文件。下列三个函数则可用于此种目的:
#include <pwd.h>
struct passwd* getpwent(void); 返回值:若成功则返回指针,若出错或达到文件结尾则返回NULL
void setpwent(void);
void endpwent(void);
#include <pwd.h> #include <stddef.h> #include <string.h> struct passwd * getpwnam(const char *name) { struct passwd *ptr; setpwent(); while ((ptr = getpwent()) != NULL) if (strcmp(name, ptr->pw_name) == 0) break; /* found a match */ endpwent(); return(ptr); /*a ptr is NULL if no match found */ }
6.3 阴影口令
#include <shadow.h>
struct spwd* getspnam(const char * name);
struct spwd* getspent(void);
两个函数返回值:若成功则返回指针,若出错则返回NULL
void setspent(void);
void endspent(void);
6.4组文件
UNIX组文件,这些字段包含在<grp.h>中所定义的group结构中。
#include<grp.h>
struct group * getgrgid(gid_t gid);
struct group * getgrnam(congst char * name);
两个函数返回值:若成功则返回指针 若出错则返回NULL
#include <grp.h>
struct group * getgrent(void); 返回值:若成功则返回指针,若出错或到达文件结尾则返回NULL
void setgrent(void);
void endgrent(void);
6.5 附加组ID
#include < unistd.h>
int getgroups(int gidsetsize,gid_t grouplist[]); 返回值:若成功则返回附加组ID数, 若出错则返回-1
#include <grp.h>
#include<unistd.h>
int setgroups(int ngroups, const gid_t grouplist[]);
#include <grp.h>
#include <unistd.h>
int initgroups(const char * username,gid_t basegid);
两个函数返回值:若成功则返回0 错出错则返回-1
6.8 登录帐号记录
大多数UNIX系统都提供下来连个数据文件:utmp文件,它记录当前登录进系统的各个用户;
wtmp文件,它跟踪各个登录和注销事件
struct utmp{
char ut_line[8];
char ut_name[8];
long ut_time;
}
登录时 login程序填写此类型结构,然后将其写入到utmp文件中,同时也将其添写到wtmp文件中。
注销时 init进程将utmp文件中相应的记录擦除,并将一个新纪录添写到wtmp文件中。
who(1)程序读utmp文件,并以可读格式打印其内容。
后来UNIX提供了last命令,它读wtmp文件并打印所选择的记录。
6.9 系统标识
#include < sys/utsname.h>
int uname(struct utsname * name); //返回值:若成功则返回非负值,若出错则返回-1
struct utsname{
char sysname[]; //name of the operating system
char nodename[]; //name of this node
char release[]; //current release of operating system
char version[]; // current versionof this release
char machine[];// name of hardware type
};
#incluce <unistd.h>
int gethostname(char * name , int namelen); //返回值:若成功则返回0 若出错则返回-1
6.10 时间和日期例程
time_t time(time_t * calptr); //返回值:若成功则返回时间值,若出错则返回-1
time_t自国际标准时间公元1970年1月1日00:00:00以来经过的秒数。这种秒数是以数据类型time_t表示的。我们称它为日历时间。丽日时间包括时间和日期。
gettimeofday提供了更高的分辨率
#include <sys/time.h>
int gettimeofday(struct timeval * restrict tp, void * restrict tzp);
struct timeval{
time_t tv_sec; /*seconds*/
long tv_usec; /*microsecones*/
}
#include<time.h>
struct tm * gmtime(const time_t * calptr);
struct tm * localtime(const time_t * calptr); //两个函数返回值:指向tm结构的指针
区别:localtime将日历时间转换成本地时间(考虑到本地时区和夏时制标志) 而gmtime则将日历转换成国际标准时间为年,月 日 时 分 秒 周日
#include<time.h>
time_t mktime(struct tm* tmptr); 返回值:若成功则返回日历事件, 若出错则返回-1
#include <time.h>
char * asctime(const struct tm* tmptr);
char * ctime(const time_t calptr); 连个函数的返回值:指向以NULL结尾的字符串的指针
#include<time.h>
size_t strftime(char * restrict buf, size_t maxsize,const char * restrict format, const sturct tm * restrict tmprt);
返回值:若有空间则返回存入数组的字符数,否则返回0
- 第六章 系统数据文件和信息
- [APUE]第六章 系统数据文件和信息
- 第六章 系统数据文件和信息
- 第六章 系统数据文件和信息
- 第六章 系统数据文件和信息
- apue学习笔记(第六章 系统数据文件和信息)
- APUE读书笔记-第六章 系统数据文件和信息
- APUE笔记---第六章系统数据文件和信息操作
- 《APUE》笔记-第六章-系统数据文件和信息
- old《APUE 2e》学习笔记 第六章 系统数据文件和信息
- 读书笔记——《UNIX环境高级编程》第六章_系统数据文件和信息
- UNIX环境高级编程学习之第六章系统数据文件和信息-实现uid to name
- UNIX环境高级编程学习之第六章系统数据文件和信息-GID To GroupName
- APUE学习笔记——第六章系统数据文件和信息
- unix高级环境编程 例子 代码实现练习 第六章:系统数据文件和信息
- apue第六章 系统数据文件和信息(详细分析shadow的加密方法)
- apue学习第九天——系统数据文件和信息(第六章)
- APUE学习笔记4——第六章——系统数据文件和信息
- 第三章 文件 I/O
- 表设计的原则与方法分析:追求表价值的最大化
- 第四章 文件和目录
- 第五章 标准I/O库
- Minifilter的动态安装、加载及卸载
- 第六章 系统数据文件和信息
- 第七章 进程环境
- 第8章 进程控制
- 第10章 信号
- JS专题1:基本概念
- JS专题2:变量 作用域和内存问题
- [.Net码农](转)图解WPF程序打包全过程
- JS 专题3 引用类型
- JS 专题4 理解面向对象