각 파일마다 세 개의 시간 필드들이 커널에 의해 관리 된다.
[각 파일에 연관된 세 가지 시간 값들]
Field |
Description |
Example |
ls(1) option |
st_atime |
last-access time of file data |
read, exec |
-u |
st_mtime |
last-modification time of file data |
write, truncate |
default |
st_ctime |
last-change time of i-node status |
chmod, chown |
-c |
@ 파일수정시간과 상태 변경 시간의 차이를 주의:
• 파일 수정 시간(st_mtime) : 파일의 내용이 마지막으로 수정된 시간.
• 상태 변경 시간(st_ctime) : 파일의 i노드가 마지막으로 수정된 시간.
i노드의 모든 정보는 파일의 실제 내용과는 개별적으로 저장되기 때문에,
파일 수정 시간뿐만 아니라 상태 변경 시간(changed-status time)도 따로
유지할 필요가 있다. (내용이 변경된 파일 또는 i노드가 수정된 파일들만 따로 보관할 때 유용)
[여러 함수들의 파일 접근 시간, 수정 시간, 상태 변경 시간 갱신 여부]
Function |
참조된 파일 or 디렉터리 |
참조된 파일 or 디렉터리의 부모 디렉터리 |
Note |
||||
a |
m |
c |
a |
m |
c |
||
chmod, fchmod |
• |
|
|||||
chown, fchown |
• |
|
|||||
creat |
• |
• |
• |
• |
• |
O_CREAT new file |
|
creat |
• |
• |
O_TRUNC existing file |
||||
exec |
• |
|
|||||
lchown |
• |
|
|||||
link |
• |
• |
• |
둘째 인수의 부모 |
|||
mkdir |
• |
• |
• |
• |
• |
|
|
mkfifo |
• |
• |
• |
• |
• |
|
|
open |
• |
• |
• |
• |
• |
O_CREAT new file |
|
open |
• |
• |
O_TRUNC existing file |
||||
pipe |
• |
• |
• |
|
|||
read |
• |
|
|||||
remove |
• |
• |
• |
파일 제거 = unlink |
|||
remove |
• |
• |
디렉토리 제거 = rmdir |
||||
rename |
• |
• |
• |
for both arguments |
|||
rmdir |
• |
• |
|
||||
truncate, ftruncate |
• |
• |
|
||||
unlink |
• |
• |
• |
|
|||
utime |
• |
• |
• |
|
|||
write |
• |
• |
|
||||
touch(1) |
• |
• |
• |
• |
• |
새로운 파일 생성 |
|
touch(1) |
• |
• |
• |
기존 파일 업데이트 |
※ 디렉터리에 연관된 그 부모 디렉터리에 연관된 세 시간 값들까지 나와 있는 것은
디렉터리 항목들을 추가, 삭제, 수정하면 그 디렉터리에 연관된 세 시간 값들이 변할 수 있다.
디렉터리라는 것은 단지 디렉터리 항목(파일이름과 해당 i노드 번호)들을 담은 파일 뿐이다.
'Linux > Programming' 카테고리의 다른 글
한계들(Limits) – limits.h 와 conf 함수들 (0) | 2011.10.23 |
---|---|
파일 접근 시간과 수정 시간을 변경 - utime(2) (0) | 2011.10.23 |
파일 접근 권한 비트 요약 (0) | 2011.10.23 |
파일 상태 정보 얻기 - stat, fstat, and lstat Functions (0) | 2011.10.23 |
리눅스 개발환경의 개요도 (0) | 2011.10.15 |