[英]C Program to write the contents of a directory
我需要在C中写一个简化版的ls程序。 它将列出当前目录的所有内容。 运行时,它应该显示与此命令相同的 output:
ls -alU --time-style=long-iso
没有向程序提供 arguments。 我在开始时遇到了麻烦,但我知道我将不得不进行一些系统调用,例如 opendir()、readdir()、lstat() 和 getpwuid()。 非常感谢任何帮助我离开地面并投入其中的帮助。 我也很想明白这一点。 谢谢!
从 output 逐个字段向后工作:
-rw-r--r-- 1 kaz kaz 3573 2018-06-07 13:59 .bashrc
.bashrc
这个名字来自于readdir
遍历。
除了名称之外的所有内容都来自在名称上调用的lstat
系统调用。
-rw...
类型和标志表示来自st_mode
,您必须将其解码为该形式。 有一些访问宏可以提供帮助,例如S_ISDIR(mode)
用于测试它是否是目录或(mode & S_IXUSR) != 0
用于测试它是否可由所有者执行。 1
是链接计数st_nlink
。 kaz
和kaz
是用户和组 ID,使用(例如) getpwuid
转换为文本以获取struct passwd *
,并getgrgid
获取具有名称字段的struct group *
。 3753
是st_size
。 日期 output 可以通过使用strftime
function 格式化st_mtime
获得。
可以使用printf
或sprintf
格式化为填充列,例如: printf("<%-50s>", "this-is-left-aligned-in-50-col-field")
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.