Member 12847767 Ответов: 1

Простое программирование unix ls на языке C


#include <sys/types.h>
    #include <dirent.h>
    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char** argv)
        DIR* dp;
        struct dirent* dentry;

        if(argc != 2) {
            printf("usage: my_ls dirname\n");
            exit(1);
        }

        if(! (dp=opendir(argv[1])) ) {
            printf("opendir error\n");
            exit(2);
        }
    
        while(1) {
            dentry=readdir(dp);
            if(!dentry)
                break;

            printf("%s\n", dentry->d_name);
        }
        return 0;
    }

Я пытаюсь сделать вывод этой программы ls
не видно ... или ..
и вывод ls-l показывает
- в следующем порядке: каталог (d)/файл (-) / симболическая ссылка(l)
- разрешение (rwxrwxrwx)
- размер файла

и не могу найти подсказку, как сделать это так.


//Чем проще, тем лучше!! Спасибо

Что я уже пробовал:

пробовал использовать st_mode, но не могу найти способ поставить его правильно

1 Ответов

Рейтинг:
2

Richard MacCutchan

Видеть readdir(3): read directory-man-страница Linux[^]. Он дает всю необходимую информацию о записи каталога. Как только у вас есть эта запись, вам нужно использовать fstat(2): состояние файла-man-страница Linux[^] чтобы получить подробную информацию о файле.