statdirentDIRpasswdspwdtm结构体简述

Posted _Camille

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了statdirentDIRpasswdspwdtm结构体简述相关的知识,希望对你有一定的参考价值。

struct __dirstream (DIR)

struct __dirstream   
   {   
   		void *__fd;    
    	char *__data;    
    	int __entry_data;    
    	char *__ptr;    
    	int __entry_ptr;    
    	size_t __allocation;    
    	size_t __size;    
    	__libc_lock_define (, __lock)   
   };   
typedef struct __dirstream DIR;  

函数 DIR *opendir(const char *pathname),即打开文件目录,返回的就是指向DIR结构体的指针,而该指针由以下几个函数使用:struct dirent *readdir(DIR *dp);
void rewinddir(DIR *dp);
int closedir(DIR *dp); //有打开就有关闭
long telldir(DIR *dp);
void seekdir(DIR *dp,long loc);


struct dirent

struct dirent 
{   
	long d_ino; 	//inode number 索引节点号 
	off_t d_off; //offset to this dirent 在目录文件中的偏移 
	unsigned short d_reclen; //length of this d_name 文件名长 
	unsigned char d_type; //the type of d_name 文件类型 
	char d_name [NAME_MAX+1];// file name (null-terminated) 文件名,最长255字符 
}  

struct stat

struct stat 
{   
        mode_t     st_mode;       //文件访问权限   
        ino_t      st_ino;       //索引节点号   
        dev_t      st_dev;        //文件使用的设备号   
        dev_t      st_rdev;       //设备文件的设备号   
        nlink_t    st_nlink;      //文件的硬连接数   
        uid_t      st_uid;        //所有者用户识别号   
        gid_t      st_gid;        //组识别号   
        off_t      st_size;       //以字节为单位的文件容量   
        time_t     st_atime;      //最后一次访问该文件的时间   
        time_t     st_mtime;      //最后一次修改该文件的时间   
        time_t     st_ctime;      //最后一次改变该文件状态的时间   
        blksize_t st_blksize;    //包含该文件的磁盘块的大小   
        blkcnt_t   st_blocks;     //该文件所占的磁盘块  
      };  

int stat(const char *file_name, struct stat *buf);的作用就是获取文件名为file_name的文件的详细信息,存储在stat结构体中。


struct passwd

struct passwd
{  
    char * pw_name; /* Username, POSIX.1 */  
    char * pw_passwd; /* Password */  
    __uid_t pw_uid; /* User ID, POSIX.1 */  
    __gid_t pw_gid; /* Group ID, POSIX.1 */  
    char * pw_gecos; /* Real Name or Comment field实名或注释字段 */  
    char * pw_dir; /* Home directory主目录, POSIX.1 */  
    char * pw_shell; /* Shell Program, POSIX.1 */  
};  

参考博客:struct passwd 结构体的相关使用函数


struct spwd

struct spwd 
{
    char *sp_namp; /* Login name */
    char *sp_pwdp; /* Encrypted password加密密码 */
    long int sp_lstchg; /* Date of last change上次更改日期 */
    long int sp_min; /* Minimum number of days between changes 更改之间的最小天数*/
    long int sp_max; /* Maximum number of days between changes 更改间隔的最大天数*/
    long int sp_warn; /* Number of days to warn user to change the password警告用户更改密码的天数 */
    long int sp_inact; /* Number of days the account may be inactive帐户可能处于非活动状态的天数 */
    long int sp_expire; /* Number of days since 1970-01-01 until account expires自1970-01-01起到帐户到期的天数 */
    unsigned long int sp_flag; /* Reserved */
};

可以查看一下linux中加密密码,在root下vi /etc/shadow
char *crypt(const char *key, const char *salt);
crypt()算法会接受一个最长可达8字符的密钥(即key),并施以数据加密算法(DES)的一种变体。salt参数指向一个两个字符的字符串,用来扰动(改变)DES算法。该函数返回一个指针,指向长度13个字符的字符串。

struct tm

引用自https://blog.csdn.net/csghydiaoke/article/details/8435010

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 到 11                */
   int tm_year;        /* 自 1900 起的年数                */
   int tm_wday;        /* 一周中的第几天,范围从 0 到 6                */
   int tm_yday;        /* 一年中的第几天,范围从 0 到 365                    */
   int tm_isdst;       /* 夏令时                        */    
};

localtime函数:
struct tm *localtime(const time_t *timep);使用 timerp的值来填充 tm 结构。timerp的值被分解为 tm 结构,并用本地时区表示。

以上是关于statdirentDIRpasswdspwdtm结构体简述的主要内容,如果未能解决你的问题,请参考以下文章

statdirentDIRpasswdspwdtm结构体简述