文件IO编程十二

来源:互联网 发布:C 释放动态数组内存 编辑:程序博客网 时间:2024/05/22 17:26

windows目录是是一个容器,是在分区下的,也是一个文件夹
而linux下目录是一个路径,是供分区挂载的,用户通过这个路径才可以找到分区。  



i_node是描写文件的属性。dir/是文件名以及索引名。

我们在操作文件的时候,经常需要获取文件的属性,比如类型、权限、大小、所有者等等。

头文件:#include <sys/types.h>  #include <sys/stat.h> #include <unistd.h>

原型:int stat(const char *path, struct stat *buf);   //如果是软链接,也是获得软链接的目标文件的属性

   int fstat(int fd, struct stat *buf);

   int lstat(const char *path, struct stat *buf);  //如果是软链接,是获得链接文件的属性

   path:文件路径
   fd:文件描述符
   buf:属性结构体

这三个函数的功能完全一样,区别是:stat( )参数是一个文件的名字,而 fstat( )的参数是一个已经被打开了的文件的描述符 fd,而 lstat( )则可以获取链接文件本身的属性。

程序:

struct stat buf;
bzero(&buf, sizeof(buf));

//stat(argv[1], &buf);
lstat(argv[1], &buf);

printf("size: %d\n", (int)buf.st_size);
printf("ino : %d\n", (int)buf.st_ino);

switch(buf.st_mode & S_IFMT)
{
case S_IFSOCK:
printf("%c\n", 's');
break;
case S_IFLNK:
printf("%c\n", 'l');
break;
case S_IFREG:
printf("%c\n", '-');
break;
case S_IFBLK:
printf("%c\n", 'b');
break;
case S_IFDIR:
printf("%c\n", 'd');
break;
case S_IFCHR:
printf("%c\n", 'c');
break;
case S_IFIFO:
printf("%c\n", 'p');
}



0 0
原创粉丝点击