目录操作/打印一个文件或目录的详细信息

来源:互联网 发布:nb878知乎 编辑:程序博客网 时间:2024/06/08 18:56
/*********************打印一个文件或目录的详细信息.  ******************/#include<stdio.h>#include<stdlib.h>#include<sys/types.h>#include<sys/stat.h>#include<dirent.h>void info(struct stat *m, char **name){char str1[3] = {'u','g','s'};char str2[3] = {'r','w','x'};stat(*name,m);printf("file type :               ");switch(((*m).st_mode & S_IFMT)){case S_IFREG :  printf("it is a regular file\n");break;case S_IFDIR : printf("it is a DIR file\n");break;case S_IFCHR: printf("it is a CHAR  file\n");break;case S_IFBLK: printf("it is a BLK file\n");break;case S_IFIFO:  printf("it is a FIFO file\n");break;case S_IFLNK: printf("it is a LINK file\n");break;case S_IFSOCK: printf("it is a SOCK file\n");break;}printf("ID:                       ");int tmp = 0004000;int i;for(i = 0; i <= 2; i++){if(tmp & (*m).st_mode){printf("%c",str1[i]);}elseprintf("-");tmp = tmp>>1;}printf("\n");printf("permision:                ");for(i = 0; i <= 8; i++){if(tmp & (*m).st_mode){printf("%c",str2[i%3]);}elseprintf("-");tmp = tmp>>1;}printf("\n");  printf("node number:              %ld\n", (long) (*m).st_ino); printf("Mode:                     %lo (octal)\n", (unsigned long) (*m).st_mode); printf("Link count:               %ld\n", (long) (*m).st_nlink);printf("Ownership:                UID=%ld   GID=%ld\n", (long) (*m).st_uid, (long) (*m).st_gid);  printf("File size:                %lld bytes\n" ,(long long) (*m).st_size); printf("Blocks allocated:         %lld\n", (long long) (*m).st_blocks); printf("Last access  time:         %s", ctime(&((*m).st_atime)));printf("Last change  time:         %s", ctime(&((*m).st_ctime)));printf("Last modifiy time:         %s", ctime(&((*m).st_mtime)));}int main(int argc ,char **argv){char buf[50];struct stat m;printf("File Name:                %s\n",argv[1]);info(&m,&argv[1]);return 0;}


原创粉丝点击