Linux编程常用的函数(十一) 系统数据文件和信息

(十一)系统数据文件和信息


1.include<pwd.h> struct passwd *getpwuid(uid_t uid);
struct passwd *getpwnam(const char *name);//获取口令文件返回passwd结构,出错返NULL
struct passwd {
  char *pw_name; //用户名
  char *pw_passwd; //加密口令
  uid_t blog_uid; //数值用户ID
  gid_t blog_gid;   //数值组ID
  char *pw_gecos; //注释字段
  char *pw_dir; //出始工作目录
  char *pw_shell;//初始shell(用户程序)
};
2.struct passwd *getpwent(void);//返回口令文件(/etc/passwd)中的下一项记录,调用用一定要使用endpwent()来关闭; 出错或者到达文件结尾则返回NULL
void setpwent(void);//打开文件(未打开时)然后反绕它所使用的文件(定位到开始处)
void endpwent(void);//关闭使用的文件
3.#include <shadow.h>   /etc/shadow
  struct spwd *getspnam(const char *name);//获取阴影口令文件返回spwd结构
  struct spwd *getspent(void);//获取阴影口令文件中的下一项并返回spwd结构;出错返回NULL
  void setspent(void); //打开文件(未打开时)然后反绕文件
  void endspent(void);//关闭文件
  struct spwd {
    char *sp_namp; //用户登录名
    char *sp_pwdp;//加密口令
    int sp_lstchg; //上次更改口令以来经过的时间
    int sp_max; //经过多少天后允许被修改
    int sp_warn; //到期警告天数
    int sp_inact; //帐户不活动之前剩余天数
    int sp_expire; //帐户到期天数
    unsigned int sp_flag;//保留字
  }
4.#include <grp.h> struct group *getgrgid(gid_t gid);//根据组ID返回相应的group结构
struct gourp *getgrnam(const char *name);根据组名获取组结构
//成功返回相对应的组结构,出错返回NULL
struct group {
  char *gr_name;//组名
  char *gr_passwd;//加密口令
  int gr_gid;//组ID
  char **gr_mem;//指向各用户名的指针的数组
};
5.struct group *getgrent(void);//返回/etc/group文件中的下一项并返回指针返回NULL
void setgrent(void);// 打开文件(未打开时)然后反绕文件
void endgrent(void);//关闭文件
6.int uname(struct utsname *name);
//返回与当前主机和操作系统有关的信息,成功返回非负,出错返回-1
struct utsname {
char sysname[]; //操作系统名
char nodename[]; //节点名
char release[]; //当前操作系统的版本
char version[]; //这个版本的序号
char machine[]; //主机名
}
7.int gethostname(char *name, int namlen);//获取主机名给name,成功返回0失败返回-1
8.#include<time.h> time_t time(time_t *calptr);//返回当前的时间和日期并存于calptr,出错-1
9.#include<sys/time.h>int gettimeofday(struct timeval *restrict tp, void *restrict tzp);
//获取精确到微秒的时间并存于tp中,返回值:总是0, tzp的唯一合法值是NULL
struct tmeval {
  time_t tv_sec; //秒
  long tv_usec ;//微秒
}
10. struct tm *gmtime(const time_t *calptr);//将日历时间转成国际标准时间的年月日时分秒周日
  struct tm *localtime(const time_t *calptr);// 将日历时间转换成本地时间(考虑到本地时间和夏时指标志)返回指向tm结构的指针
  struct tm {
    int tm_sec; //秒数 [0-60] 60可以表示润秒
    int tm_min; //分钟 [0-59]
    int tm_hour; //小时 [0-23]
    int tm_mday; //日 [1-31]
    int tm_mon; //月 [0-11]
    int tm_year;//年 [1900-]
    int tm_wday; //星期 [0-6]
    int tm_yady;//一年的第几天 [0-365]
    int tm_sidst; //是否为夏时制
  };
11.time_t mktime(struct tm *tmptr);//以本地时间的信息转化成time_t的值,返回:日历时间/-1
12.char *asctime(const struct tm *tmptr);
  char *ctime(const time_t *calptr);
  //将各自的时间参数转化成如”Tue Feb 10 18:20:15 2007/n/0”的格式
13.size_t strftime(char *restrict buf, size_t maxsize, const char *restrict format, const struct tm *restrict tmptr);//将时间tmptr以指定的format格式存于buf中,返回存入的字符数/失败0
  format中可以用以下符号表示要输出的格式:
  %a 缩写的周日名 Tue               %A 全周日名     Tuesday
  %b 缩写的月名   Feb               %B 全月名       February
  %c 日期和时间 Tue Feb 10 13:02:15 2007 %C 年/100 [0-99]   7
  %d 月日[0-31] 10                 %D 日期[MM/DD/YY] 07/02/10
  %e 月日[1-31](一位数字加空格) 2       %F [YYYY-MM-DD] 2007-02-10
  %g 基于周的年的最后两位数   07       %G 基于周的年     2007
  %h 与%b相同                     %H 小时(24小时制):[00-23]
  %I 小时(12小时制)[01-12]           %j   年日[001-366]
  %m 月[01-12]                     %M 分[00-59]
  %n 换行符                       %p AM/PM       PM
  %r 本地时间(12小时) 06:27:38 PM     %R 与%H:%M相同 18:27
  %S 秒[00-60]                     %t 水平制表符
  %T 与“%H:%M:%S” 18:27:38     %u 周日[1-7]
  %U 星期日周数[00-53]                 %V 周数[01-53]
  %w 周日[0-6]                     %W 星期一周数
  %x 日期                         %X 时间
  %y 年的最后两位数     07             %Y 年     2007
  %z UTC偏移量   -0500             %Z 时区名 EST
  %% 转换一个%     %
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值