1、思维导图
https://www.zhixi.com/view/c71b9ad1
2、作业
#include <my_h.h>
void get_fileType(mode_t m)
{
switch (m & S_IFMT) {
case S_IFBLK: printf("b\n"); break;
case S_IFCHR: printf("c\n"); break;
case S_IFDIR: printf("d\n"); break;
case S_IFIFO: printf("p\n"); break;
case S_IFLNK: printf("l\n"); break;
case S_IFREG: printf("-\n"); break;
case S_IFSOCK: printf("s\n"); break;
default: printf("unknown?\n"); break;
}
return ;
}
void get_filep(mode_t m)
{
char s[4]="rwx";
for(int i=0;i<9;i++)
{
if(m&(0400>>1)==0)
{
putchar('-');
continue;
}
putchar(s[i%3]);
}
return ;
}
int get_stat(char *n)
{
struct stat buf;
if(stat("n",&buf)<0)
{
perror("stat");
return -1;
}
get_fileType(buf.st_mode);
get_filep(buf.st_mode);
printf(" %d ",buf.st_nlink);
struct password *pwd=getpwuid(buf.st_uid);
if(NULL==pwd)
{
perror("getpwuid");
return -1;
}
printf("%s ",pwd->pw_name);
struct group *grp=getgrgid(buf.st_gid);
if(NULL==grp)
{
perror("getgrgid");
return -1;
}
printf("%s ",grp->gr_name);
printf("%d ",buf.st_size);
get_time(buf.st_time);
}
int main(int argc, const char *argv[])
{
char s[100];
printf("输入读取的文件路径:");
scanf("%s",s);
DIR *od=opendir(s);//打开目录文件
if(NULL==dir)
{
perror("opendir");
return -1;
}
struct dirent *rod=NULL;
while(1)
{
rod=readdir(od);
if(NULL==rod)
break;
strcat(s,rod->d_name);
get_stat(s);
printf("%s\n",rod->d_name);
}
closedir(od);//关闭目录文件
return 0;
}