簡體   English   中英

在C中實現ls命令

[英]Implementing the ls command in C

我正在嘗試使用盡可能多的標志在c中實現ls命令,但是我在獲取正確的Minor和Major文件中遇到問題,這是我所做的示例。

> ls -l ~/../../dev/tty
crw-rw-rw- 1 root tty 5, 0 Nov 25 13:30 

這是正常的ls命令,您可以看到Major為5,Minor為0。我的程序顯示以下內容:

Minor: 6
Major: 0

我仍然是一個初學者,所以我在這里還不是很了解這個問題,這是我到目前為止所做的(該程序與ls命令還不相同,只顯示有關文件的信息)。

int disp_file_info(char **argv)
{
 struct stat sb;

 stat(argv[1], &sb);
 printf("Inode: %d\n", sb.st_ino);
 printf("Hard Links: %d\n", sb.st_nlink);
 printf("Size: %d\n", sb.st_size);
 printf("Allocated space: %d\n", sb.st_blocks);
 printf("Minor: %d\n", minor(sb.st_dev));
 printf("Major: %d\n", major(sb.st_dev));
 printf("UID: %d\n", sb.st_uid);
 printf("GID: %d\n", sb.st_gid);
 }

現在,這僅是為了獲取有關文件的某些信息,與ls命令相比,除Minor和Major外,其他一切似乎都是正確的。

您正在使用st_dev ,即文件所在的設備。 您需要st_rdev ,這是特殊文件“是” /代表的設備。 (不過,您首先應該檢查文件是否是設備節點。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM