繁体   English   中英

C 写入目录内容的程序

[英]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 kazkaz是用户和组 ID,使用(例如) getpwuid转换为文本以获取struct passwd * ,并getgrgid获取具有名称字段的struct group * 3753st_size 日期 output 可以通过使用strftime function 格式化st_mtime获得。

可以使用printfsprintf格式化为填充列,例如: printf("<%-50s>", "this-is-left-aligned-in-50-col-field")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM