ll命令显示如下:
[liupc@ubuntu ~/Projects]$>ll
total 40
drwxrwxr-x 5 liupc liupc 4096 May 15 06:23 ./
drwxr-xr-x 15 liupc liupc 4096 May 15 05:22 ../
drwxrwxr-x 2 liupc liupc 4096 May 12 11:07 0513/
-rw-rw-r-- 2 liupc liupc 718 May 15 05:22 111
drwxrwxr-x 2 liupc liupc 4096 May 12 11:02 20160512/
-rw-rw-r-- 2 liupc liupc 718 May 15 05:22 Depth_Search.c
结构体stat的定义为:
struct stat {
dev_t st_dev; //如果是设备,返回设备表述符,否则为0.
ino_t st_ino; // i节点号。
mode_t st_mode; //文件类型。无符号短整型 。两个字节存储文件类型和权限。
nlink_t st_nlink; //链接数。指的是硬链接的链接数。
uid_t st_uid; //属主ID
gid_t st_gid; //组ID
dev_t st_rdev; //设备类型
off_t st_size; //文件大小,字节表示
blksize_t st_blksize; //块大小
blkcnt_t st_blocks; //块数
time_t st_atime; //最后访问时间 time_t存放的是距离1970.1.1的秒数。
time_t st_mtime; //最后修改时间
time_t st_ctime; //最后权限修改时间
}buf;
将stat结构体转换成ll的格式的难点分析:
权限:
printf("%x",buf.st_node); //输出:41fd.即0100 0001 1111 1101。可以看出文件类型为:4;权限为:775。
硬链接数:
printf("%d",buf.st_nlink); //输出:5。与ll命令显示相同。
用户名:
printf("%d",buf.st_uid); //输出uid:1000,通过查看/