����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