第四章:文件类型
2013-05-30 12:12
127 查看
文件类型
1、普通文件:除了可执行文件,其他的文件对操作系统来说都是无格式的。
2、目录文件:包含了其他文件的名字 和 指向这些文件的信息的指针的文件。
3、块特殊文件:这种文件提供了对设备(例如磁盘)的带缓冲的访问。每次访问以固定长度进行。
4、字符特殊文件:这种文件提供对设备的不带缓冲的访问,每次访问的长度可变。 系统中的所有设备要么是字符特殊文件 要么是 块特殊文件
5、FIFO : 这种文件用于进程间的通信,也可以称之为命名管道
6、套接字 : 这种文件类型用于网络通信 , 也可以用于本机上的进程通信( linux上编译的时候要定义 _GNU_SOURCE宏 )
7、符号链接:这种类型的文件指向另一个文件
用于判断文件类型的 宏 定义在<sys/stat.h>
S_ISREG(m) 普通文件?
S_ISDIR(m) 目录文件?
S_ISCHR(m) 字符设备?
S_ISBLK(m) 块设备?
S_ISFIFO(m) 命名管道?
S_ISLNK(m) 符号链接? (Not in POSIX.1-1996.)
S_ISSOCK(m) 套接字? (Not in POSIX.1-1996.)
这些宏的参数是struct stat 结构中的st_mode成员
1、普通文件:除了可执行文件,其他的文件对操作系统来说都是无格式的。
2、目录文件:包含了其他文件的名字 和 指向这些文件的信息的指针的文件。
3、块特殊文件:这种文件提供了对设备(例如磁盘)的带缓冲的访问。每次访问以固定长度进行。
4、字符特殊文件:这种文件提供对设备的不带缓冲的访问,每次访问的长度可变。 系统中的所有设备要么是字符特殊文件 要么是 块特殊文件
5、FIFO : 这种文件用于进程间的通信,也可以称之为命名管道
6、套接字 : 这种文件类型用于网络通信 , 也可以用于本机上的进程通信( linux上编译的时候要定义 _GNU_SOURCE宏 )
7、符号链接:这种类型的文件指向另一个文件
用于判断文件类型的 宏 定义在<sys/stat.h>
S_ISREG(m) 普通文件?
S_ISDIR(m) 目录文件?
S_ISCHR(m) 字符设备?
S_ISBLK(m) 块设备?
S_ISFIFO(m) 命名管道?
S_ISLNK(m) 符号链接? (Not in POSIX.1-1996.)
S_ISSOCK(m) 套接字? (Not in POSIX.1-1996.)
这些宏的参数是struct stat 结构中的st_mode成员
#include<stdio.h> #include<unistd.h> #include<sys/stat.h> int main(int argc, char** argv) { struct stat buf; int type; char* p; lstat(argv[1],&buf); //此处 用 lstat , 因为 stat 和 fstat 跟随链接 , 这样就不能测试 S_ISLNK(mode) 宏了 type = buf.st_mode; if(S_ISREG(type)){ p = "普通文件"; }else if(S_ISDIR(type)){ p = "目录文件"; }else if(S_ISCHR(type)){ p = "字符设备文件"; }else if(S_ISBLK(type)){ p = "块设备文件"; }else if(S_ISFIFO(type)){ p = "命名管道文件"; }else if(S_ISLNK(type)){ p = "链接文件"; // 特指软链接 }else if(S_ISSOCK(type)){ p = "套接字文件"; }else{ p = "其他类型文件"; } printf("%s\n",p); return 0; }
cc -D__GNU_SOURCE file_type.c 这些宏的定义如下 #define S_ISXXX(type) ((type&S_IFMT) == S_IFXXX) 例如 : #define S_ISDIR(type) ((type&S_IFMT) == S_IFDIR)
相关文章推荐
- 第四章 数据结构与算法- 串
- java疯狂讲义第四章练习题
- Linux不同颜色文件类型/权限/属性
- 第四章——第一个程序
- The Definitive Guide To Django 2 学习笔记(八) 第四章 模板 (四)基本的模板标签和过滤器
- 《数据库设计入门经典》读书笔记——第四章:规范化
- MTM动画教程学习笔记1【第四章 渲染技术】
- C++回炉之_C++PrimerPlus_第四章 复合类型(一)
- VS2010 ReportViewer导出文件下载保存不能识别文件类型
- 剑指offer读书笔记:第四章,解决面试题的思路02
- 算法导论第四章4.1节代换法课后答案
- 《高级编程技术》作业[4]——第四章部分习题选做
- Nova PhoneGap框架 第四章 本地数据库
- 《统计学习方法》 第四章 读书笔记
- 第四章.使用ant编译hadoop eclipse插件
- 第四章
- 《Apache MINA 2.0 用户指南》第四章:会话
- 面试宝典第四章Java基础知识——4.10多线程
- 第四章代码
- 第四章 动手试一试