struct stat
/usr/include/x86_64-linux-gnu/bits/struct_stat.h
struct stat
{
#ifdef __USE_TIME_BITS64
# include <bits/struct_stat_time64_helper.h>
#else
__dev_t st_dev; /* Device. */
# ifndef __x86_64__
unsigned short int __pad1;
# endif
# if defined __x86_64__ || !defined __USE_FILE_OFFSET64
__ino_t st_ino; /* File serial number. */
# else
__ino_t __st_ino; /* 32bit file serial number. */
# endif
# ifndef __x86_64__
__mode_t st_mode; /* File mode. */
__nlink_t st_nlink; /* Link count. */
# else
__nlink_t st_nlink; /* Link count. */
__mode_t st_mode; /* File mode. */
# endif
__uid_t st_uid; /* User ID of the file's owner. */
__gid_t st_gid; /* Group ID of the file's group.*/
# ifdef __x86_64__
int __pad0;
# endif
__dev_t st_rdev; /* Device number, if device. */
# ifndef __x86_64__
unsigned short int __pad2;
# endif
# if defined __x86_64__ || !defined __USE_FILE_OFFSET64
__off_t st_size; /* Size of file, in bytes. */
# else
__off64_t st_size; /* Size of file, in bytes. */
# endif
__blksize_t st_blksize; /* Optimal block size for I/O. */
# if defined __x86_64__ || !defined __USE_FILE_OFFSET64
__blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */
# else
__blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */
# endif
# ifdef __USE_XOPEN2K8
/* Nanosecond resolution timestamps are stored in a format
equivalent to 'struct timespec'. This is the type used
whenever possible but the Unix namespace rules do not allow the
identifier 'timespec' to appear in the <sys/stat.h> header.
Therefore we have to handle the use of this header in strictly
standard-compliant sources special. */
struct timespec st_atim; /* Time of last access. */
struct timespec st_mtim; /* Time of last modification. */
struct timespec st_ctim; /* Time of last status change. */
# define st_atime st_atim.tv_sec /* Backward compatibility. */
# define st_mtime st_mtim.tv_sec
# define st_ctime st_ctim.tv_sec
# else
__time_t st_atime; /* Time of last access. */
__syscall_ulong_t st_atimensec; /* Nscecs of last access. */
__time_t st_mtime; /* Time of last modification. */
__syscall_ulong_t st_mtimensec; /* Nsecs of last modification. */
__time_t st_ctime; /* Time of last status change. */
__syscall_ulong_t st_ctimensec; /* Nsecs of last status change. */
# endif
# ifdef __x86_64__
__syscall_slong_t __glibc_reserved[3];
# else
# ifndef __USE_FILE_OFFSET64
unsigned long int __glibc_reserved4;
unsigned long int __glibc_reserved5;
# else
__ino64_t st_ino; /* File serial number. */
# endif
# endif
#endif /* __USE_TIME_BITS64 */
};
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* Inode number */
mode_t st_mode; /* File type and mode */
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; /* Block size for filesystem I/O */
blkcnt_t st_blocks; /* Number of 512 B blocks allocated */
/* Since POSIX.1-2008, this structure supports nanosecond
precision for the following timestamp fields.
For the details before POSIX.1-2008, see VERSIONS. */
struct timespec st_atim; /* Time of last access */
struct timespec st_mtim; /* Time of last modification */
struct timespec st_ctim; /* Time of last status change */
#define st_atime st_atim.tv_sec /* Backward compatibility */
#define st_mtime st_mtim.tv_sec
#define st_ctime st_ctim.tv_sec
};
st_mode
파일의 종류 및 권한(mode)를 나타내는 것으로 16비트가 사용된다.
| 파일의 종류 | effective uid/gid sticky bit |
파일의 허가권 | |||||||||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0000 000 000000000
'HOME' 카테고리의 다른 글
| [Linux] 커널 컴파일(build linux kernel) (1) (1) | 2025.05.08 |
|---|---|
| LinuxSP - Standard I/O Library: 함수 (0) | 2025.04.25 |
| LinuxSP - Files and Directories: 함수 (0) | 2025.04.25 |
| LinuxSP - FILE I/O: 함수 (1) | 2025.04.24 |
| LinuxSP - FILE I/O: 개념 (0) | 2025.04.24 |