UNIX环境高级编程之系统数据文件和信息
6.2 口令文件
1. 查询用户信息
#include <pwd.h>
struct passwd* getpwuid(uid_t uid);
struct passwd* getpwnam(const char* name); //成功执行返回指针,出错返回NULL
2. 访问/etc/passwd文件
#include <pwd.h>
struct passwd* getpwent(void); //成功执行返回指针,出错或者到达文件结尾返回NULL
void setpwent(void);
void endpwent(void);
3. 访问阴影口令
#include <shadow.h>
struct spwd* getspnam(const char* name);
struct spwd* getspent(void); //两个函数返回值:成功执行返回指针,出错返回NULL
void setspent(void);
void endspent(void);
4. 查询组信息
#include <grp.h>
struct group* getgrgid(gid_t gid);
struct group* getgrnam(const char* name); //两个函数返回值:成功执行返回指针,出错返回NULL
5. 访问组文件
#include <grp.h>
struct group* getgrent(void); //成功执行返回指针,出错或者到达文件结尾返回NULL
void setgrent(void);
void getgrent(void);
6. 获取和设置附加组ID
#include <unistd.h>
int getgroups(int getsetsize,gid_t grouplist[]); //若成功执行返回附加组ID,失败返回-1
#include <grp.h>
int setgroups(int ngroups,const gid_t grouplist[]);
int initgroups(const char* username, gid_t basegid); // 两个函数返回值:成功执行返回0,失败返回-1
6.9 系统标识
1. 获取当前主机和操作系统信息
#include <sys/utsname.h>
int uname(struct utsname* name); //若成功执行返回0,失败返回-1
6.10 时间和日期例程
1. 获取当前时间和日期
#include <time.h>
time_t time(time_t* calptr); //成功实行返回时间值,出错返回-1
2. 返回更精确的时间
#include <sys/time.h>
int gettimeofday(struct timeval* restrict tp, void* restrict tzp); //总是返回0
3.返回结构化的时间和日期
#include <time.h>
struct tm* gmtime(const time_t* calptr);
struct tm* localtime(const time_t* calptr); //返回指针
4. 将结构化时间转换成距离1970.1.1 00:00:00的秒数
#include <time.h>
time_t mktime(struct tm* tmptr); //成功执行返回日历时间,出错返回-1
5. 将日历时间转换成字符串表示的时间
#include <time.h>
char* asctime(const struct tm* tmptr);
char* ctime(const time_t* calptr); // 返回以BULL结尾的字符串指针
6. 返回格式化的时间
#include <time.h>
size_t strftime(char* restrict buf, size_t maxsize, const char* restrict format, cosnt struct tm* restrict tmptr);
// 若有空间则返回存入数组的字符数,否则返回0