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 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结构体简述的主要内容,如果未能解决你的问题,请参考以下文章