今天主要内容是时间获取以及文件属性和权限的获取
时间获取
1.time
1.time time_t time(time_t *tloc);
功能:返回1970-1-1到现在的秒数(格林威治时间)
参数:tloc:存放秒数空间首地址
返回值:成功返回秒数失败返回-1
2.localtime
2.localtimestruct tm *localtime(const time_t *timep);
功能:将秒数转换为本地时间
参数:timep:存放秒数空间首地址
返回值:成功返回结构体时间失败返回NULLstruct tm {int tm_sec; /* Seconds (0-60) */int tm_min; /* Minutes (0-59) */int tm_hour; /* Hours (0-23) */int tm_mday; /* Day of the month (1-31) */int tm_mon; /* Month (0-11) */int tm_year; /* Year - 1900 */int tm_wday; /* Day of the week (0-6, Sunday = 0) */int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */int tm_isdst; /* Daylight saving time */
};
3.mktime
3.mktimetime_t mktime(struct tm *tm);
功能:将本地时间转换为秒数
接下来给大家举一个例子:
#include"head.h"int main(void)
{time_t t; //声明了一个time_t类型的变量t,用于存储时间信息。struct tm *ptm = NULL;time(&t); //将当前时间的秒数存储到变量 t 中ptm = localtime(&t); //存储的时间解析为本地时间,//并将结果保存在指针 ptm 所指向的结构体中。printf("%ld\n",t);printf("%04d-%02d-%02d %02d:%02d:%02d\n",ptm->tm_year+1900,ptm->tm_mon+1,ptm->tm_mday,ptm->tm_hour,ptm->tm_min,ptm->tm_sec);t = mktime(ptm);printf("%ld\n",t);return 0;
}
结果为:
文件属性和权限的获取
1.stat
1.statint stat(const char *pathname, struct stat *statbuf);
功能:将pathname对应的文件信息放入statbuf中
参数:pathname:文件路径字符串的首地址statbuf:存放文件信息空间的首地址
返回值:成功返回0 失败返回-1 struct stat {dev_t st_dev; /* ID of device containing file */ino_t st_ino; /* Inode number */mode_t st_mode; /* File type and mode */nlink_t st_nlink; /* Number of hard links */uid_t st_uid; /* User ID of owner */gid_t st_gid; /* Group ID of owner */dev_t st_rdev; /* Device ID (if special file) */off_t st_size; /* Total size, in bytes */blksize_t st_blksize; /* Block size for filesystem I/O */blkcnt_t st_blocks; /* Number of 512B blocks allocated *//* Since Linux 2.6, the kernel supports nanosecondprecision for the following timestamp fields.For the details before Linux 2.6, see NOTES. */struct timespec st_atim; /* Time of last access */struct timespec st_mtim; /* Time of last modification */struct timespec st_ctim; /* Time of last status change */#define st_atime st_atim.tv_sec /* Backward compatibility */#define st_mtime st_mtim.tv_sec#define st_ctime st_ctim.tv_sec};/etc/passwd 口令文件/etc/group 组信息文件
2.getpwuid
2.getpwuid struct passwd *getpwuid(uid_t uid);
功能:通过UID获得对应的用户信息
参数:uid:用户的ID号
返回值:成功返回包含用户信息的结构体失败返回NULLstruct passwd {char *pw_name; /* username */char *pw_passwd; /* user password */uid_t pw_uid; /* user ID */gid_t pw_gid; /* group ID */char *pw_gecos; /* user information */char *pw_dir; /* home directory */char *pw_shell; /* shell program */};
3.getgrgid
3.getgrgidstruct group *getgrgid(gid_t gid);
功能:通过组ID获得组信息
参数:gid:组的ID号
返回值:成功返回包含组信息的结构体失败返回NULLstruct group {char *gr_name; /* group name */char *gr_passwd; /* group password */gid_t gr_gid; /* group ID */char **gr_mem; /* NULL-terminated array of pointersto names of group members */};
4.readlink
4.readlinkssize_t readlink(const char *pathname, char *buf, size_t bufsiz);功能:读取连接文件本身的内容参数:pathname:链接文件的路径buf:存放数据空间首地址bufsiz:最大存放数据字节数返回值:成功返回读到字节个数失败返回-1
软连接和硬链接
1.软连接(符号链接)通过文件名链接,所有能够看到的连接文件均为软连接文件ln -s file.txt a.txt 2.硬链接通过文件对应的inode节点链接 ln file.txt b.txt
以上就是今天内容