����14-31 linux/include/sys/stat.h


  1 #ifndef _SYS_STAT_H

  2 #define _SYS_STAT_H

  3

  4 #include <sys/types.h>

  5

  6 struct stat {

  7         dev_t   st_dev;       // �����ļ����豸�š�

  8         ino_t   st_ino;       // �ļ�i�ڵ�š�

  9         umode_t st_mode;      // �ļ����ͺ����ԣ������棩��

 10         nlink_t st_nlink;     // ָ���ļ�����������

 11         uid_t   st_uid;       // �ļ����û�(��ʶ)�š�

 12         gid_t   st_gid;       // �ļ�����š�

 13         dev_t   st_rdev;      // �豸��(����ļ���������ַ��ļ�����ļ�)��

 14         off_t   st_size;      // �ļ���С���ֽ�����������ļ��dz����ļ�����

 15         time_t  st_atime;     // �ϴΣ���󣩷���ʱ�䡣

 16         time_t  st_mtime;     // ����޸�ʱ�䡣

 17         time_t  st_ctime;     // ���ڵ��޸�ʱ�䡣

 18 };

 19

    //

    // ������Ϊst_mode�ֶ����õ�ֵ����ķ������ơ���Щֵ���ð˽��Ʊ�ʾ���μ���12���ļ�

    // ϵͳ��ͼ12-5��i�ڵ������ֶ����ݣ��� Ϊ���ڼ��䣬��Щ�������ƾ�ΪһЩӢ�ĵ��ʵ���

    // ��ĸ����д��϶��ɡ� �������� S_IFMT ��ÿ����ĸ�ֱ�������� State��Inode��File��

    // Mask��Type�������� S_IFREG ����State��Inode��File��REGular������д��ĸ����ϣ�

    // ����S_IRWXU��State��Inode��Read��Write��eXecute��User����ϡ��������ƿ��Դ����ơ�

    // �ļ����ͣ�

 20 #define S_IFMT  00170000      // �ļ����ͱ���λ�����루8���Ʊ�ʾ����

 21 #define S_IFLNK  0120000      // �������ӡ�

 22 #define S_IFREG  0100000      // �����ļ���

 23 #define S_IFBLK  0060000      // �����⣨�豸���ļ��������dev/fd0��

 24 #define S_IFDIR  0040000      // Ŀ¼��

 25 #define S_IFCHR  0020000      // �ַ��豸�ļ���

 26 #define S_IFIFO  0010000      // FIFO�����ļ���

    // �ļ�����λ��

    // S_ISUID���ڲ����ļ���set-user-ID��־�Ƿ���λ�����ñ�־��λ����ִ�и��ļ�ʱ�����̵�

    // ��Ч�û�ID��������Ϊ���ļ��������û�ID��S_ISGID���������ID������ͬ������

 27 #define S_ISUID  0004000    // ִ��ʱ�����û�ID��set-user-ID����

 28 #define S_ISGID  0002000    // ִ��ʱ������ID��set-group-ID����

 29 #define S_ISVTX  0001000    // ����Ŀ¼������ɾ����־��

 30

 31 #define S_ISLNK(m)      (((m) & S_IFMT) == S_IFLNK)   // �����Ƿ���������ļ���

 32 #define S_ISREG(m)      (((m) & S_IFMT) == S_IFREG)   // �����Ƿ񳣹��ļ���

 33 #define S_ISDIR(m)      (((m) & S_IFMT) == S_IFDIR)   // �Ƿ�Ŀ¼�ļ���

 34 #define S_ISCHR(m)      (((m) & S_IFMT) == S_IFCHR)   // �Ƿ��ַ��豸�ļ���

 35 #define S_ISBLK(m)      (((m) & S_IFMT) == S_IFBLK)   // �Ƿ���豸�ļ���

 36 #define S_ISFIFO(m)     (((m) & S_IFMT) == S_IFIFO)   // �Ƿ�FIFO�����ļ���

 37

    // �ļ�����Ȩ�ޣ�

 38 #define S_IRWXU 00700      // �������Զ���д��ִ��/���������������ĸ����User����

 39 #define S_IRUSR 00400      // ���������ɡ�

 40 #define S_IWUSR 00200      // ����д���ɡ�

 41 #define S_IXUSR 00100      // ����ִ��/�������ɡ�

 42

 43 #define S_IRWXG 00070      // ���Ա���Զ���д��ִ��/���������������ĸ����Group����

 44 #define S_IRGRP 00040      // ���Ա�����ɡ�

 45 #define S_IWGRP 00020      // ���Աд���ɡ�

 46 #define S_IXGRP 00010      // ���Աִ��/�������ɡ�

 47

 48 #define S_IRWXO 00007      // �����˶���д��ִ��/�������ɣ����������ĸO����Other����

 49 #define S_IROTH 00004      // �����˶����ɣ����3����ĸ����Other����

 50 #define S_IWOTH 00002      // ������д���ɡ�

 51 #define S_IXOTH 00001      // ������ִ��/�������ɡ�

 52

 53 extern int chmod(const char *_path, mode_t mode);     // �޸��ļ����ԡ�

 54 extern int fstat(int fildes, struct stat *stat_buf);  // ȡָ���ļ�������ļ�״̬��Ϣ��

 55 extern int mkdir(const char *_path, mode_t mode);     // ����Ŀ¼��

 56 extern int mkfifo(const char *_path, mode_t mode);    // �����ܵ��ļ���

 57 extern int stat(const char *filename, struct stat *stat_buf); // ȡָ���ļ������ļ�״̬��Ϣ��

 58 extern mode_t umask(mode_t mask);  // �������������롣

 59

 60 #endif

 61