- 姓名:李宗政
- 学号:201821121029
- 班级:计算1811
1. 编写程序
在服务器上用Vim编写一个程序:实现Linux系统命令ls -lai
的功能,
myls.h
myls.c
main_myls.c
2. 分析运行结果
运行结果:
结果分析:
以第一行为例
第一列:索引号
索引号为266867(printf("%d ",(int)file_message->st_ino);)
第二列:文件的类型及权限
drwxr--r-x:
r:可读取文件的实际内容 w:可编辑、新增、修改该文件的实际内容 x:可被执行
-:普通文件,d:目录文件,l:链接文件,b:设备文件,c:字符设备文件,p:管道文件
(
void file_type(const struct stat* file_message)
{
//mode_t mode = (*get_message).st_mode;
mode_t mode = file_message->st_mode;
if (S_ISREG(mode)) printf("-"); // 普通文件
else if(S_ISDIR(mode)) printf("d"); // 目录文件
else if(S_ISCHR(mode)) printf("c"); // 字符设备文件
else if(S_ISBLK(mode)) printf("b"); // 块设备文件
else if(S_ISFIFO(mode)) printf("p"); // 管道文件
else if(S_ISLNK(mode)) printf("l"); // 链接文件
else printf("s"); // socket文件
}
void file_power(const struct stat* file_message)
{
mode_t mode = file_message->st_mode;
// 判断USR权限
printf("%c", mode&S_IRUSR?'r':'-');
printf("%c", mode&S_IWUSR?'w':'-');
printf("%c", mode&S_IXUSR?'x':'-');
// 判断GRP权限
printf("%c", mode&S_IRGRP?'r':'-');
printf("%c", mode&S_IWGRP?'w':'-');
printf("%c", mode&S_IXGRP?'x':'-');
// 判断OTH权限
printf("%c", mode&S_IROTH?'r':'-');
printf("%c", mode&S_IWOTH?'w':'-');
printf("%c ", mode&S_IXOTH?'x':'-');
}
)
第三列:文件的链接数.
5(printf("%d ", file_message->st_nlink); // 打印硬链接数)
第四列:拥有文件的用户
lizongzheng
第五列:拥有文件的组
jmu-cs-18(file_id(file_message); // 转换并打印用户id与组id)
第六列:文件的大小。
4096(printf("%5ld ", file_message->st_size); // 打印文件大小)
第七列:文件最后的修改时间。
Apr 30 11.00(file_mtime(file_message); // 打印文件最后修改时间)
第八列:文件名(printf("%s ", filename); // 打印文件名)