码迷,mamicode.com
首页 > 其他好文 > 详细

通过fstat函数判断描述符类型

时间:2014-05-09 02:01:26      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:blog   class   code   int   c   2014   

fstat函数用于返回关于文件的信息到一个struct stat结构中,stat结构中的st_mode可以用来区分文件类型。


struct stat {
               dev_t     st_dev;     /* ID of device containing file */
               ino_t     st_ino;     /* inode number */
               mode_t    st_mode;    /* protection */
               nlink_t   st_nlink;   /* number of hard links */
               uid_t     st_uid;     /* user ID of owner */
               gid_t     st_gid;     /* group ID of owner */
               dev_t     st_rdev;    /* device ID (if special file) */
               off_t     st_size;    /* total size, in bytes */
               blksize_t st_blksize; /* blocksize for file system I/O */
               blkcnt_t  st_blocks;  /* number of 512B blocks allocated */
               time_t    st_atime;   /* time of last access */
               time_t    st_mtime;   /* time of last modification */
               time_t    st_ctime;   /* time of last status change */
           };


一些用来判断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.)

示例:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <sys/socket.h>
#include <fcntl.h>
#include <stdlib.h>

main()
{
	struct stat st;
	int sockfd, fd;
	
	sockfd = socket(AF_INET, SOCK_STREAM, 0);
	if (sockfd == -1)
	{
		perror("socket error");
		exit(-1);
	}

	fd = open("/home/liyuchen/dev/net.h", O_RDWR);
	if (fd == -1)
	{
		perror("open error");
		exit(-1);
	}

	fstat(sockfd, &st);
	if (S_ISREG(st.st_mode))
		printf("文件描述符\n");
	if (S_ISSOCK(st.st_mode))
		printf("套接字描述符\n");

	fstat(fd, &st);
	if (S_ISREG(st.st_mode))
		printf("文件描述符\n");
	if (S_ISSOCK(st.st_mode))
		printf("套接字描述符\n");
}


通过fstat函数判断描述符类型,布布扣,bubuko.com

通过fstat函数判断描述符类型

标签:blog   class   code   int   c   2014   

原文地址:http://blog.csdn.net/aspnet_lyc/article/details/25332001

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!