[英]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.