fstat().stat()函数
int stat(const char *path, struct stat *buf);
int fstat(int fd, struct stat *buf);
唯一不同是参数不同,其他一样。
文件的一些属性参数:
struct stat{
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */ 文件inode号
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */ 硬链接数
uid_t st_uid; /* user ID of owner */ 文件的UID
gid_t st_gid; /* group ID of owner */文件的GID
dev_t st_rdev; /* device ID (if special file) */设备ID(如果特殊的文件)
off_t st_size; /* total size, in bytes */文件大小
blksize_t st_blksize; /* blocksize for filesystem I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */ 文件的三个时间atime mtime atime
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
通过下面的一些宏函数定义可以判断文件类型:
The following POSIX macros are defined to check the file type using the st_mode field:
下面的POSIX宏定义使用st_mode字段检查文件类型:
如果如下宏返回真就说明是所指文件
if( S_ISREG(st_mode) )
{
说明是普通文件
}
S_ISREG(m) is it a regular file? 普通文件
S_ISDIR(m) directory?目录
S_ISCHR(m) character device? 字符设备
S_ISBLK(m) block device?块设备
S_ISFIFO(m) FIFO (named pipe)? 管道
S_ISLNK(m) symbolic link? (Not in POSIX.1-1996.) 符号链接
S_ISSOCK(m) socket? (Not in POSIX.1-1996.)套接字
例子:
int main(int argc , char* argv[])
{
struct stat fileinfo;
int fd;
if(argc > 2 ) return 0;
fd = open(argv[1] , O_RDONLY);
if(fd == -1)
{
printf("%s\n" , strerror(errno));
}
else
{
fstat(fd , &fileinfo);//获取文件属性 //stat只需要改下参数即可
if( S_ISREG(fileinfo.st_mode) )
{
printf("普通文件\n");
}
}
close(fd);
return 0;
}
fstat().stat()函数的更多相关文章
- linux下实现ls()函数遍历目录
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600794.html 需求:在linux下遍历目录,输出目录中各文件名. 在linux下遍历目录的相关函数有 ...
- [C++]linux下实现ls()函数遍历目录
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600794.html 需求:在linux下遍历目录,输出目录中各文件名. 在linux下遍历目录的相关函数有 ...
- ext2文件系统
2.1. 总体存储布局 我们知道,一个磁盘可以划分成多个分区,每个分区必须先用格式化工具(例如某种mkfs命令)格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的 ...
- Linux系统编程(6)——文件系统
计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易,文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数 ...
- inode表元数据,存储在物理存储体上
一个文件除了数据需要存储之外,一些描述信息也需要存储,例如文件类型(常规.目录.符号链接等),权限,文件大小,创建/修改/访问时间等,也就是ls -l命令看到的那些信息,这些信息存在inode中而不是 ...
- Node.js:文件系统
ylbtech-Node.js:文件系统 1.返回顶部 1. Node.js 文件系统 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API. Node 导入文件系统模块(fs)语 ...
- 33.Node.js 文件系统fs
转自:http://www.runoob.com/nodejs/nodejs-module-system.html Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API. Node ...
- Node.js Learning Notes
简介 简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务 ...
- C语言:stat,fstat和lstat函数
这三个函数的功能是一致的,都用于获取文件相关信息,但应用于不同的文件对象.对于函数中给出pathname参数,stat函数返回与此命名文件有关的信息结构,fstat函数获取已在描述符fields上打开 ...
随机推荐
- Only one database connection at a time is supported
Only one database connection at a time is supported 在网上找到了2个方法: 1. VSS在使用过程中,尤其是数据迁移的过程中,可能会出现上述情况 ...
- 关闭utorrent的广告
版本:3.4.9 / 方法来源:wikihow. 在"选项-高级"里将下面的选项全部改成false. offers.left_rail_offer_enabledoffers.sp ...
- PAT 1057. Stack (30)
题目地址:http://pat.zju.edu.cn/contests/pat-a-practise/1057 用树状数组和二分搜索解决,对于这种对时间复杂度要求高的题目,用C的输入输出显然更好 #i ...
- os4开始CLLocationManager类中不支持locationServicesEnabled属性了
locationServicesEnabled改为类方法 //判断定位服务是否开启 if ([CLLocationManager locationServicesEnabled]) { }
- Add-VMNetworkAdapterAcl(添加访问控制列表)
Add-VMNetworkAdapterAclCreates an ACL to apply to the traffic through a virtual machine network adap ...
- ThinkPHP函数详解:D方法
从本篇开始,我们会陆续给大家详细说明下框架内置函数的用法. D方法 D方法应该是用的比较多的方法了,用于实例化自定义模型类,是ThinkPHP框架对Model类实例化的一种封装,并实现了单例模式,支持 ...
- QT下自定义QQ聊天窗口tab控件
1.用继承pushbutton派生类来实现tab按钮,里面加一个QPushbutton关闭按钮:(自定义类:CCustomTabButton) 2.多个tab按钮用QHboxLayout做容器: 3. ...
- Jquery 常用总结
获取元素的宽度: 如果用$(ele).attr("width")获取的值不带px 如果用$(ele).css("width")获取的值带px //获 ...
- jfinal上传下载
1. 上传 <form id="form1" method="post" enctype="multipart/form-data" ...
- 音频播放AVFoundation框架
一.系统声音 ios应用中的提醒声音.游戏背景音乐等.可以播放的格式有CAF.AIF.WAV. 系统声音服务提供了一个API,但是没有操作声音和控制音量的功能,因此如果为多媒体或者游戏创建专门的声音, ...