̾??
stat
, lstat
,
fstat
—
?ե????륹?ơ??????μ???
Standard C Library (libc, -lc)
<sys/types.h>
<sys/stat.h>
int
stat
(const
char *path, struct stat *sb)
int
lstat
(const char *path,
struct stat *sb) int
fstat
(int fd,
struct stat *sb)
stat
() ?????ƥॳ?????ϡ?
path
???ؤ??ե??????ξ????????????ޤ???
???ꤷ???ե????????ɼ??긢???????߸????¹Ը???ɬ?פ????ޤ?????
???????????Υե??????ػ????ѥ?̾?????줿???٤ƤΥǥ??쥯?ȥ??ϡ?
??????ǽ?Ǥ??뤳?Ȥ?ɬ?פǤ???
lstat
()
?ؿ??? stat
()
?˻??Ƥ??ޤ????????ꤷ???ե????뤬?????ܥ??å????Ǥ????????ϰۤʤ??ޤ???
lstat
()
?ϥ??ξ??????ᤷ?ޤ?????
stat
()
?ϥ??????Ȥ????ե??????ξ??????֤??ޤ???
fstat
()
?????ƥॳ?????ϡ??ե????뵭?һ?
fd
?Ƕ??̤????륪???ץ??ե??????ˤĤ??ơ?????Ʊ???????????????ޤ???
???? sb ?ϡ???¤??
stat ?ؤΥݥ??Ǥ???
?????ϡ? <sys/stat.h>
?????????졢?ե??????˴ؤ??????????ݻ????ޤ???
?ե????륷???ƥ??˴?Ϣ????
struct stat
?Υե??????ɤϰʲ??ΤȤ????Ǥ?:
- st_dev
- ?ե????????ޤ??ǥХ????ο??? ID??
- st_ino
- ?ե??????? i ?Ρ????ֹ档
- st_nlink
- ?ե??????ؤΥϡ??ɥ??ο???
st_dev ?? st_ino
?ե??????ɤϤȤ??˥????ƥ?????ͣ???Υե??????????ꤷ?ޤ???
struct stat
?λ????˴ؤ????ե??????ɤϡ??ʲ??ΤȤ????Ǥ?:
- st_atime
- ?ե??????Υǡ??????Ǹ??˥??????????줿???
mknod(2),
utimes(2),
read(2)
??????
readv(2)
?????ƥॳ???????ѹ??????ޤ???
- st_mtime
- ?ե??????Υǡ??????Ǹ??˽??????줿???
mkdir(2),
mkfifo(2),
mknod(2),
utimes(2),
write(2)
??????
writev(2)
?????ƥॳ???????ѹ??????ޤ???
- st_ctime
- ?ե????륹?ơ????????Ǹ????ѹ????줿????
(inode ?ǡ????ν???)??
chflags(2),
chmod(2),
chown(2),
creat(2),
link(2),
mkdir(2),
mkfifo(2),
mknod(2),
rename(2),
rmdir(2),
symlink(2),
truncate(2),
unlink(2),
utimes(2),
write(2)
??????
writev(2)
?????ƥॳ???????ѹ??????ޤ???
- st_birthtime
- inode ?????????줿?Ȥ??λ??
_POSIX_SOURCE
???????????Ƥ??ʤ????硢?????˴ؤ????ե??????ɤϰʲ??Τ褦???????????ޤ?:
#ifndef _POSIX_SOURCE
#define st_atime st_atimespec.tv_sec
#define st_mtime st_mtimespec.tv_sec
#define st_ctime st_ctimespec.tv_sec
#endif
struct stat
?Υ??????˴ؤ????ե??????ɤϡ??ʲ??ΤȤ????Ǥ?:
- st_size
- ?Х??Ȥ?ɽ???????ե????륵??????
- st_blksize
- ?ե??????κ?Ŭ???????ϥ֥??å?????????
- st_blocks
- ?ե??????? 512
?Х???ñ?̤dz??????Ƥ??줿?֥??å??μºݤο???
û???????ܥ??å????? inode
???ݻ??????Ƥ??????硢???ο??ͤ? 0
?ˤʤ뤳?Ȥ??????ޤ???
struct stat
?Υ?????????Ϣ?Υե??????ɤϰʲ??ΤȤ????Ǥ?:
- st_uid
- ?ե??????ν?ͭ?ԤΥ桼??ID??
- st_gid
- ?ե??????Υ??롼??ID??
- st_mode
- ?ե??????ξ??? (????????)??
???ơ???????????? st_mode
?ˤϡ??ʲ??Τ褦?ʥӥåȤ??????ޤ?:
#define S_IFMT 0170000 /* ?ե??????Υ????? */
#define S_IFIFO 0010000 /* ̾???դ??ѥ??? (fifo) */
#define S_IFCHR 0020000 /* ?????饯?????ü??ե????? */
#define S_IFDIR 0040000 /* ?ǥ??쥯?ȥ? */
#define S_IFBLK 0060000 /* ?֥??å????ü??ե????? */
#define S_IFREG 0100000 /* ?̾? */
#define S_IFLNK 0120000 /* ?????ܥ??å??????? */
#define S_IFSOCK 0140000 /* ?????å? */
#define S_IFWHT 0160000 /* ?ۥ磻?ȥ????? */
#define S_ISUID 0004000 /* ?¹Ի??˥桼?? ID ?????? */
#define S_ISGID 0002000 /* ?¹Ի??˥??롼?? ID ?????? */
#define S_ISVTX 0001000 /* ???Ѹ??ˤ⥹???åפ??줿?ƥ????Ȥ???¸ */
#define S_IRUSR 0000400 /* ?ɼ??긢?¤ν?ͭ?? */
#define S_IWUSR 0000200 /* ?????߸??¤ν?ͭ?? */
#define S_IXUSR 0000100 /* ?¹? / ???????¤ν?ͭ?? */
?????????⡼?ɤΥꥹ?ȤˤĤ??Ƥϡ?
<sys/stat.h>
,
access(2),
chmod(2)
?Ȥ??Ƥ????????? ?ʲ??Υޥ?????
m ???????Ϥ??줿
st_mode
?ͤ????ꤵ?줿?????פΥե????????б????Ƥ??뤫?ɤ???
?ƥ??Ȥ??뤿???????Ѳ?ǽ?Ǥ?:
S_ISBLK
(m)
- ?֥??å??ü??ե????뤫?ɤ????ƥ??Ȥ??롣
S_ISCHR
(m)
- ?????饯???ü??ե????뤫?ɤ????ƥ??Ȥ??롣
S_ISDIR
(m)
- ?ǥ??쥯?ȥ꤫?ɤ????ƥ??Ȥ??롣
S_ISFIFO
(m)
- ?ѥ??פ? FIFO
?ü??ե????뤫?ɤ????ƥ??Ȥ??롣
S_ISLNK
(m)
- ?????ܥ??å??????ɤ????ƥ??Ȥ??롣
S_ISREG
(m)
- ?̾??Υե????뤫?ɤ????ƥ??Ȥ??롣
S_ISSOCK
(m)
- ?????åȤ??ɤ????ƥ??Ȥ??롣
S_ISWHT
(m)
- ?ۥ磻?ȥ????Ȥ??ɤ????ƥ??Ȥ??롣
?ޥ????ϡ??ƥ??Ȥ????ʤ? 0
?ʳ????ޤ??ϥƥ??Ȥ????ʤ? 0
??ɾ?????ޤ???
Upon successful completion, the value 0 is returned;
otherwise the value -1 is returned and the global variable
errno is set to indicate the error.
?????ΥС????????Υ????ƥ??Ǥϡ?
st_dev, st_uid,
st_gid, st_rdev,
st_size, st_blksize,
st_blocks
?ե??????ɤ??̤Υ????פ????Ѥ??Ƥ??ޤ?????
stat
()
?????ƥॳ?????? lstat
()
?????ƥॳ?????ϡ??ʲ??Τ褦?ʾ????˥??顼?Ȥʤ??ޤ?:
- [
EACCES
]
- ???ꤵ?줿?ѥ??ˤϡ??????????Ĥ????Ƥ??ʤ??ǥ??쥯?ȥ꤬?ޤޤ??Ƥ??ޤ???
- [
EFAULT
]
- sb ?????ޤ??? path
?????ϡ??ץ??????˳??????Ƥ??줿???ɥ쥹???֤??ϰϳ????ؤ??Ƥ??ޤ???
- [
EIO
]
- ?ե????륷???ƥ??Ǥ??ɤ߽????????????ϥ??顼??ȯ?????ޤ?????
- [
ELOOP
]
- ?ѥ?̾???Ѵ??????Ȥ??˸??Ф??줿?????ܥ??å?????¿?????ޤ???
- [
ENAMETOOLONG
]
- ?ѥ?̾?ι??????Ǥ? 255
ʸ?????ۤ??Ƥ??뤫??
?ޤ??ϥѥ?̾???Τ? 1023
ʸ?????ۤ??Ƥ??ޤ???
- [
ENOENT
]
- ???ꤵ?줿?ե????뤬¸?ߤ??ޤ?????
- [
ENOTDIR
]
- ?ѥ??ι??????????˥ǥ??쥯?ȥ??ʳ??Τ??Τ??ޤޤ??Ƥ??ޤ???
- [
EOVERFLOW
]
- ?ե????륵?????ΥХ??ȿ?????
sb
?ǻؤ????Ƥ??빽¤?Τ???????ɽ???Ǥ??ޤ?????
fstat
()
?????ƥॳ?????ϡ??ʲ??Τ褦?ʾ????˥??顼?Ȥʤ??ޤ?:
- [
EBADF
]
- fd
????????ͭ???ʵ??һҤǤϤ????ޤ?????
- [
EFAULT
]
- sb
?????????ץ??????˳??????Ƥ??줿???ɥ쥹???֤??ϰϳ????ؤ??Ƥ??ޤ???
- [
EIO
]
- ?ե????륷???ƥ????ɤ߽??Ƥ????֤??????ϥ??顼??ȯ?????ޤ?????
- [
EOVERFLOW
]
- ?ե????륵?????ΥХ??ȿ?????
sb
?ǻؤ????Ƥ??빽¤?Τ???????ɽ???Ǥ??ޤ?????
fstat
() ???å?
(?????ӥѥ???)
??Ŭ?Ѥ????ȡ??֥??å????????ե??????ɡ?
?????Ӹ?ͭ?ǥХ????? inode ?ֹ??ʳ??? 0
?????ä??Хåե????ᤵ???ޤ???
stat
() ?????ƥॳ??????
fstat
() ?????ƥॳ?????ϡ?
IEEE Std 1003.1-1990 (“POSIX.1”)
??Ŭ?礷?Ƥ??ޤ???
stat
() ?????ƥॳ??????
fstat
() ?????ƥॳ?????ϡ?
Version 7 AT&T UNIX
???о줷?ޤ????? lstat
()
?????ƥॳ?????? 4.2BSD
???о줷?ޤ?????