簡體   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