Linux中的文件状态信息

最近要写FTP中的STAT命令,这个命令其他部分一会儿就写好了。但是在带路径参数上,要返回类似“ls -l”命令所输出的文件的详细信息的时候卡壳了。今天查了一天了,基本上弄清楚思路了。

文件的包含在struct stat结构中。其中,至少有一下七个成员域:

1
2
3
4
5
6
7
8
9
10
dev_t st_dev;
ino_t st_ino;
mode_t st_mode;
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;

事实上,文件的类型和权限就在st_mode中,可以用:S_IS…类的宏来判断文件的类型,在用st_mode和具体的权限代码的宏如S_IRUSR等按位与得到相应的权限。用户名和组名可以由uid和gid得到的struct passwd和struct group的成员域pw_name 和gr_name分别得到。最后修改时间是将st_ctime成员传给ctime()得到的。

但是ls -l是经过了排序,而且每一列都是算号了所有输出行的最大宽度后对齐输出的。这个还没想好,明天早晨再来试试,希望今天晚上能够得到一些建议。

《Linux中的文件状态信息》有3条评论

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据