最近要写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是经过了排序,而且每一列都是算号了所有输出行的最大宽度后对齐输出的。这个还没想好,明天早晨再来试试,希望今天晚上能够得到一些建议。
别太感谢我~!请我吃顿饭就可以了~!
哈哈,你咋知道俺会给你答案?
那就给你点提示吧:
qsort()
getenv(“COLUMNS”)
不错,有进步.