当前位置: 技术问答>linux和unix
如何用程序区分目录和文件
来源: 互联网 发布时间:2015-10-14
本文导语: 如何用程序区分目录和文件 | int stat(const char *file_name,struct stat *buf); int fstat(int filedes,struct stat *buf); struct stat { dev_t st_dev; /* 设备 */ ino_t st_ino; /* 节点 */ mode_t st_mode; /* 模...
如何用程序区分目录和文件
|
int stat(const char *file_name,struct stat *buf);
int fstat(int filedes,struct stat *buf);
struct stat {
dev_t st_dev; /* 设备 */
ino_t st_ino; /* 节点 */
mode_t st_mode; /* 模式 */
nlink_t st_nlink; /* 硬连接 */
uid_t st_uid; /* 用户ID */
gid_t st_gid; /* 组ID */
dev_t st_rdev; /* 设备类型 */
off_t st_off; /* 文件字节数 */
unsigned long st_blksize; /* 块大小 */
unsigned long st_blocks; /* 块数 */
time_t st_atime; /* 最后一次访问时间 */
time_t st_mtime; /* 最后一次修改时间 */
time_t st_ctime; /* 最后一次改变时间(指属性) */
};
stat用来判断没有打开的文件,fstat用来判断打开的文件.通过着属性st_mode我们可以判断给定的文件是一个普通文件还是一个目录,连接等等.可以使用下面几个宏来判断.
S_ISLNK(st_mode):是否是一个连接.S_ISREG是否是一个常规文件.S_ISDIR是否是一个目录S_ISCHR是否是一个字符设备.S_ISBLK是否是一个块设备S_ISFIFO是否 是一个FIFO文件.S_ISSOCK是否是一个SOCKET文件
例:
struct stat statbuf;
if(stat(filename,&statbuf)==-1)
{
//错误处理
}
if(S_ISDIR(statbuf.st_mode))
{
//目录
}
if(S_ISREG(statbuf.st_mode))
{
//文件
}
int fstat(int filedes,struct stat *buf);
struct stat {
dev_t st_dev; /* 设备 */
ino_t st_ino; /* 节点 */
mode_t st_mode; /* 模式 */
nlink_t st_nlink; /* 硬连接 */
uid_t st_uid; /* 用户ID */
gid_t st_gid; /* 组ID */
dev_t st_rdev; /* 设备类型 */
off_t st_off; /* 文件字节数 */
unsigned long st_blksize; /* 块大小 */
unsigned long st_blocks; /* 块数 */
time_t st_atime; /* 最后一次访问时间 */
time_t st_mtime; /* 最后一次修改时间 */
time_t st_ctime; /* 最后一次改变时间(指属性) */
};
stat用来判断没有打开的文件,fstat用来判断打开的文件.通过着属性st_mode我们可以判断给定的文件是一个普通文件还是一个目录,连接等等.可以使用下面几个宏来判断.
S_ISLNK(st_mode):是否是一个连接.S_ISREG是否是一个常规文件.S_ISDIR是否是一个目录S_ISCHR是否是一个字符设备.S_ISBLK是否是一个块设备S_ISFIFO是否 是一个FIFO文件.S_ISSOCK是否是一个SOCKET文件
例:
struct stat statbuf;
if(stat(filename,&statbuf)==-1)
{
//错误处理
}
if(S_ISDIR(statbuf.st_mode))
{
//目录
}
if(S_ISREG(statbuf.st_mode))
{
//文件
}
|
stat
S_ISDIR
S_ISDIR
|
楼上正解
|
楼上正解:使用stat函数
|
使用stat函数
然后使用S_ISDIR宏
详细请查看stat的使用手册
欢迎访问我的个人网站 www.linuxc.net
然后使用S_ISDIR宏
详细请查看stat的使用手册
欢迎访问我的个人网站 www.linuxc.net
|
用stat()