#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <pwd.h>
#include <grp.h>
#include <time.h>
#include <dirent.h>
#include <string.h>
#include <fcntl.h>
#include <stdlib.h>
#include <errno.h>
char* get_filePermission(mode_t m)
{
static char getPer[10]="";
char per[]="rwx";
for(int i=0;i<=8;i++)
{
if((m&(0400>>i))==0)
{
getPer[i]='-';
continue;
}
getPer[i]=per[i%3];
}
return getPer;
}
int main(int argc, const char *argv[])
{
DIR *dp = opendir("./");
if(NULL == dp)
{
perror("opendir");
return -1;
}
int count = 1;
struct dirent* rp = NULL;
int fd;
struct stat buf;
while(1)
{
rp = readdir(dp);
if(NULL == rp)
{
if(0 == errno)
{
printf("目录文件读取完毕\n");
break;
}
else
{
perror("readdir");
return -1;
}
}
if((rp->d_name)[0]=='.')
{
continue;
}
printf("[%d] %s\n", count++, rp->d_name);
if(stat(rp->d_name,&buf)<0)
{
perror("stat");
return -1;
}
printf("mode:%o\n",buf.st_mode);
printf(" %d\n",buf.st_gid);
printf("time:%ld\n",buf.st_ctime);
printf("%s\n",get_filePermission(buf.st_mode));
printf(" %ld",buf.st_nlink);
printf(" %ld ",buf.st_size);
putchar(10);
putchar(10);
putchar(10);
}
return 0;
}
结果: