stat函数和文件类型
2013-12-31 21:42
489 查看
文件和目录 stat ,fstat , lstat #include <sys/stat.h> stat 函数 int stat (const char * restirct pathname ,struct stat * restrict buf) int fstat(int filedes , struct stat * buf) int lstat(const char *restrict pathname, struct stat * restrict buf) 此三个函数的返回值,如果成功返回0 ,失败返回 -1 star函数fan'hui返回给定文件的相关信息.fstat 函数获取已经在描述符filedes 上面打开的文件的相关信息,lstat与stat类似,但是当文件名是一个符号链接是,lstat 返回该符号链接的有关信息,而不是有该链接符号引用文件的信息. 第二个参数buf指向一个结构,这些stat函数填写由buf指向的结构.该结构的实际实现可能有所不同,但基本形式是: struct stat{ mode_t st_mode ; ino_t st ino; dev_t st_dev; dev_t st_rdev; nlink_t st_nlink; uid_t st_uid; gid_t st_gid; off_t st_size; time_t st_atime; time_t st_mtime; time_t st_ctime; bllsize_t st_blksize; blkcnt_t st_blocks; }; stat 结构提供的文件信息可以通过 ls -l 查看 文件的类型: (1)普通文件(regular file):最常见的文件类型,包含了某种形式的数据 (2)目录文件(directory file):这种文件包含了其他文件的名字和指向与这些文件相关的信息. (3)特殊块文件(block special file) :这种文件类型提供对设备(如磁盘)带缓冲的访问,每次访问以固定的长度为单位. (4)字符特殊文件(character special file): 这种文件提供对设备不带缓冲的访问,每次访问的长度可变,系统中所有的设备要么是特殊字符文件,要么是块特殊文件. (5)FIFO: 这中类型文件用于进程间通信,有时称其为命名管道(named pipe) (6)套接字(pocket) :用于进程间的网络通信,也可用于在一台宿主机上的进程之间的非网络通信. (7)符号链接(symboliek link): 这中文件类型指向另一个文件 文件类型的信息包含在stat结构的st_mode成员中. <sys/stat.h>中的文件类型宏 S_ISREG() ===>普通文件 S_ISDIR() ===>目录文件 S_ISCHR() ===>字符特殊文件 S_ISBLK() ===>块特殊文件 S_ISFIFO() ===>管道或FIFO S_ISLINK() ===>符号链接 S_ISSOCK() ===>套接字 一个打印文件类型的程序: #include "apue.h" int main(int argc , char * argv[]) { int i; struct stat buf; char *ptr; for ( i = 1 ; i <argc ; i++ ){ printf("%s:",argv[i]); if(lstat(argv[i],&buf) < 0) { printf("lstat error"); continue ; } if (S_ISREG(buf.st_mode)) ptr = "regular file"; else if(S_ISDIR(buf.st_mode)) ptr = "direecroty file"; else if(S_ISBLK(buf.st_mode)) ptr = "block file"; else if(S_ISFIFO(buf.st_mode)) ptr = "FIFO file"; else if(S_ISLNK(buf.st_mode)) ptr = "symbolic file"; else if(S_ISSOCK(buf.st_mode)) ptr = "socket file"; else if(S_ISCHR(buf.st_mode)) ptr = "character file"; else ptr = "unknown mode"; printf ("%s\n",ptr); } return 0; }
相关文章推荐
- UNIX高级环境编程(3)Files And Directories - stat函数,文件类型,和各种ID
- JAVA打开CHM类型帮助文件
- LAMP搭建10:Apache指定类型文件不写入日志
- BingMap读取shape(arcgis)格式数据(将shape文件转成Sql server2008的geometry类型,再进行读取)
- Hibernate 存储SQL Server image 类型的文件
- java 读取Properties类型的配置文件参数值
- Retrofit 2.0 文件上传类型
- java 自动识别图片文件类型 图片后缀 图片类型
- Servlet文件下载例子详解及response的contentType类型大全
- php文件类型MIME对照表
- JavaScript判断文件上传类型的方法
- linux中的文件类型
- Keil综合(01)_一些常见文件类型的作用和功能说明
- 复习 使用for、while循环遍历文件,数据类型转换
- Apache tika -- 解析多种类型(word、pdf、txt 等)文件!
- <input type="file" />浏览时只显示指定文件类型
- MFC中 CString类型用fprintf 函数写到文件中乱码的解决办法
- Sharepoint2010中如何全文搜索.pdf文件类型的内容
- ASP.NET FileupLoad控件在不同浏览器中返回的文件类型
- sharepoint被阻止的文件类型解释说明