• 系统数据文件和信息


    口令文件:

    #include <pwd.h>
    
    // 分别通过UID和用户名获取与指定用户相关的passwd信息
    // 成功返回指针,出错返回NULL
    struct passwd *getpwuid(uid_t uid);
    struct passwd *getpwnam(const char *name);
    // passwd结构可以存储/etc/passwd文件中每一行中的信息
    // 注意:此处返回的passwd结构通常是函数内部的静态变量
    
    // 打开并获取整个/etc/passwd口令文件
    // 成功返回指针,出错或到达文件尾端,返回NULL
    struct passwd *getpwent(void);
    
    // 反绕口令文件,即将口令文件的offset重置到文件头
    void setpwent(void);
    // 关闭getpwent()打开的口令文件
    void endpwent(void);

    阴影口令文件:

    #include <shadow.h>
    
    // 获取/etc/shadow文件信息
    // 成功返回指针,出错返回NULL
    struct spwd *getspent(void);
    struct spwd *getspnam(const char *name);
    
    void setspent(void);
    void endspent(void);

    组文件:

    #include <grp.h>
    
    // 获取指定组信息
    // 成功返回指针,出错返回NULL
    struct group *getgrgid(gid_t gid);
    struct group *getgrnam(const char *name);
    
    struct group *getgrent(void);
    
    void setgrent(void);
    void endgrent(void);

    附属组:

    #include <unistd.h>
    #include <grp.h>
    
    // 获取进程所属用户的各附属组ID,并填写到grouplist[]中
    // 成功返回附属组数量,出错返回-1
    int getgroups(int gidsetsize, gid_t grouplist[]);
    // 填写到grouplist[]中的附属组ID数量最多为gidsetsize
    
    // 由超级用户调用,为调用进程设置附属组ID表
    // 成功返回0,出错返回-1
    int setgroups(int ngroups, const gid_t grouplist[]);
    // ngroups 指定 grouplist[]中元素数
    
    // 由超级用户调用,初始化指定用户的附属组ID表
    // 成功返回0,出错返回-1
    int initgroups(const char *username, gid_t basegid);

    介绍用户、组:https://www.cnblogs.com/lnlin/p/6951179.html

    获取主机与操作系统相关信息:

    #include <sys/utsname.h>
    
    // 成功返回非负值,出错返回-1
    int uname(struct utsname *name);
    // 通过name返回主机与系统相关信息
    
    // 储存主机和系统信息
    struct utsname{
        char sysname[];
        char nodename[];
        char release[];
        char version[];
        char machine[];
    }

    时间和日期例程:

    #include <time.h>
    
    // 成功返回时间值,出错返回-1
    time_t time(time_t *calptr);
    
    // 将日历时间转换为本地时间
    struct tm *gmtime(const time_t *calptr);
    // 将日历时间转换为年月日时分秒周的分解结构
    struct tm *localtime(const time_t *calptr);
    // tm结构储存返回后的时间值
    
    struct tm {
        int tm_sec;       /* 秒 – 取值区间为[0,59] */
        int tm_min;       /* 分 - 取值区间为[0,59] */
        int tm_hour;      /* 时 - 取值区间为[0,23] */
        int tm_mday;      /* 一个月中的日期 - 取值区间为[1,31] */
        int tm_mon;       /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
        int tm_year;      /* 年份,其值等于实际年份减去1900 */
        int tm_wday;      /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
        int tm_yday;      /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
        int tm_isdst;     /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
    };
    
    // 将本地时间转化为time_t值
    // 成功返回日历时间,出错返回-1
    time_t mktime(struct tm *tmptr);
    
    // 获取指定时钟的时间
    #include <sys/time.h>
    // 成功返回0,出错返回-1
    int clock_gettime(clockid_t clockid, struct timespec *tsp);
    // clockid_t取值:
    // CLOCK_REALTIME(实际系统时间) 
    // CLOCK_MONOTONIC(不带负跳数的实际系统时间)
    // CLOCK_PROCESS_CPUTIME_ID(调用进程的CPU时间) 
    // CLOCK_THREAD_CPUTIME_ID(调用线程的CPU时间)
    
    // 成功返回0,出错返回-1
    int clock_getres(clockid_t clockid, struct timespec *tsp);
    // 将tsp指向的timespec结构初始化为与clock_id参数对应的时钟精度
    
    // 设置特定时钟时间
    // 成功返回0,出错返回-1
    int clock_settime(clockid_t clockid, const struct timespec *tsp);
  • 相关阅读:
    用于聚类的信用卡数据
    微信支付 参考
    小程序中 自定义组件的使用
    小程序页面跳转传参
    小程序人脸核身
    ant desgin pro 的项目中 封装的 socket.js
    vscode红色波浪线
    ant desgin pro 的项目中 请求之封装
    小程序的请求 方式封装
    浏览器网页链接打开本地exe客户端程序 及 无法导入,指定文件不是注册脚本.您的注册表编辑器只能导入2进位注册文件
  • 原文地址:https://www.cnblogs.com/lnlin/p/10071486.html
Copyright © 2020-2023  润新知