void print_dir(char *dir_name){
direct dir;
int f_dir, count;
f_dir = open(dir_name, O_RDONLY, 0);
count = read(f_dir, (char *)&dir, sizeof(dir));
printf("count = %d\n", count);
close(f_dir);
}
Просмотр содержимого каталога.
Код:
Упорно выводит "count = -1". Кто-нибудь знает в чем тут дело? Если не сложно киньте работающий исходник.
З.Ы. Прога запускается с привелегиями root-а.
Цитата:
Originally posted by _voron
Как вывести на экран файлы содержащиеся в каталоге?
Как вывести на экран файлы содержащиеся в каталоге?
Например так:
Код:
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
void dir(char dir[]);
int main(int ac, char *av[])
{
if(ac==1)
dir(".");
else
while(--ac)
{
printf("%s: \n",*++av);
dir(*av);
}
return EXIT_SUCCESS;
}
void dir(char dir[])
{
DIR *dir_ptr;
struct dirent *direntp;
if((dir_ptr=opendir(dir))==NULL)
fprintf(stderr,"ls: cannot open %s\n",dir);
else
{
while((direntp=readdir(dir_ptr))!=NULL)
printf("%s\n",direntp->d_name);
closedir(dir_ptr);
}
}
#include <config.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
void dir(char dir[]);
int main(int ac, char *av[])
{
if(ac==1)
dir(".");
else
while(--ac)
{
printf("%s: \n",*++av);
dir(*av);
}
return EXIT_SUCCESS;
}
void dir(char dir[])
{
DIR *dir_ptr;
struct dirent *direntp;
if((dir_ptr=opendir(dir))==NULL)
fprintf(stderr,"ls: cannot open %s\n",dir);
else
{
while((direntp=readdir(dir_ptr))!=NULL)
printf("%s\n",direntp->d_name);
closedir(dir_ptr);
}
}
У меня работает.
Цитата:
З.Ы. Прога запускается с привелегиями root-а.
А вот это - лишнее, если ты конечно не задаешь каталог-аргумент с root'овыми правами доступа.
З.Ы. А то что под root-ом запускаюсь специально написал, чтобы вопрос о правах доступа сразу отпал.