The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"opendir() && stat()"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"opendir() && stat()" 
Сообщение от Jenizix Искать по авторуВ закладки(ok) on 21-Июн-05, 02:48  (MSK)
OS: Linux Slackware 10.1
Compiler: g++

Пишу что-то типа ls в *nix... так вот как перебрать содержимое диры я заню, а вот как получить такую информацию о файле как тип файла(бинарник, архив, папка, линк) и т.п. незнаю... и еще, как получить флаги доступа? да и поиск чето не колится...  пока юзаю ф-ию stat()...

Вот что я накодил:
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <stdio.h>
#include <malloc.h>
#include <string.h>

int main( int argc, char* argv[] )
{
    char path[]="/etc";
    char tmp[1024];
    DIR *dir;
    dir = opendir(path);    
    struct dirent *namelist;
    struct stat file_stat;

    while(namelist = readdir(dir))
    {
if(strcmp(namelist->d_name,"."))
    if(strcmp(namelist->d_name,".."))
    {
     strcpy(tmp,path);
     strcat(tmp,"/");
strcat(tmp,namelist->d_name);
stat(tmp,&file_stat);
     printf("%s - %i\n",namelist->d_name, file_stat.st_size);
    }
    }

    free(namelist);
    
    return 0;
}

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "opendir() && stat()" 
Сообщение от SergeyP Искать по авторуВ закладки on 21-Июн-05, 16:11  (MSK)
>OS: Linux Slackware 10.1
>Compiler: g++
>
>Пишу что-то типа ls в *nix... так вот как перебрать содержимое диры
>я заню, а вот как получить такую информацию о файле как
>тип файла(бинарник, архив, папка, линк) и т.п. незнаю... и еще, как
>получить флаги доступа? да и поиск чето не колится...  пока
>юзаю ф-ию stat()...
>
>Вот что я накодил:
>#include <sys/types.h>
>#include <sys/stat.h>
>#include <dirent.h>
>#include <stdio.h>
>#include <malloc.h>
>#include <string.h>
>
>int main( int argc, char* argv[] )
>{
>    char path[]="/etc";
>    char tmp[1024];
>    DIR *dir;
>    dir = opendir(path);
>    struct dirent *namelist;
>    struct stat file_stat;
>
>    while(namelist = readdir(dir))
>    {
> if(strcmp(namelist->d_name,"."))
>     if(strcmp(namelist->d_name,".."))
>     {
>      strcpy(tmp,path);
>      strcat(tmp,"/");
> strcat(tmp,namelist->d_name);
>  stat(tmp,&file_stat);
>     printf("%s - %i\n",namelist->d_name, file_stat.st_size);
>     }
>    }
>
>    free(namelist);
>
>    return 0;
>}


Chitai man: man 2 stat , tam vse est':
       struct stat {
                  dev_t         st_dev;      /* device */
                  ino_t         st_ino;      /* inode */
                  mode_t        st_mode;     /* protection */
                  nlink_t       st_nlink;    /* number of hard links */
                  uid_t         st_uid;      /* user ID of owner */
                  gid_t         st_gid;      /* group ID of owner */
                  dev_t         st_rdev;     /* device type (if inode device) */
                  off_t         st_size;     /* total size, in bytes */
                  blksize_t     st_blksize;  /* blocksize for filesystem I/O */
                  blkcnt_t      st_blocks;   /* number of blocks allocated */
                  time_t        st_atime;    /* time of last access */
                  time_t        st_mtime;    /* time of last modification */
                  time_t        st_ctime;    /* time of last change */
              };

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру