본문 바로가기
프로그래밍/UNIX 고급 프로그래밍

제4장 파일과 디렉터리

by Ohdumak 2017. 9. 20.
728x90
UNIX 고급 프로그래밍
국내도서
저자 : 리처드 스티븐스,스티븐 레이고 / 류광역
출판 : 퍼스트북 2014.08.28
상세보기



4.17 기호링크


도해 4.17 여러 함수들의 기호 링크 처리 방식

함수

기호 링크를 따라가지 않음

기호 링크를 따라감

 access

 

 O

 chdir

 

 O

 chmod

 

 O

 creat

 

 O

 exec

 

 O

 lchown

 O

 

 link

 

 O

 lstat

 O

 

 open

 

 O

 opendir

 

 O

 pathconf

 

 O

 readlink

 O

 

 remove

 O

 

 rename

 O

 

 stat

 

 O

 truncate

 

 O

 unlink

 O

 


예외 O_CREAT와 O_EXCL을 모두 설정해서 open 함수를 호출했을 때, 만일 지정된 경로이름이 기호 링크이면 open 호출이 실패하고 errno가 EEXIST로 설정된다. 보안구멍을 막기 위해서!



4.18 기호 링크의 생성과 읽기


기호 링크는 symlink 함수나 symlinkat 함수로 생성할 수 있다.

링크 자체를 열어서 링크 안의 이름을 읽으려면 readlink 함수와 readlinkat 함수를 사용하면 된다.



4.19 파일시간


도해 4.19 각 파일에 연관된 세 가지 시간 값

필드

설명


ls(1)옵션

 st_atim

 파일 자료의 최종 접근 시간

 read

 -u

 st_mtim

 파일 자료의 최종 수정 시간

 write

기본

 st_ctim

 i-노드 상태의 최종 변경 시간

 chmod, , chown

-c


수정 시간(st_mtim)과 상태 변경 시간(st_ctim)이 서로 다른 것임을 주의하기 바란다.

수정 시간은 파일의 내용이 마지막으로 수정된 시간을 뜻하고, 상태 변경 시간은 파일의 i-노드가 마지막으로 수정된 시간을 뜻한다.



4.20 futimens, utimensat, utimes 함수


파일의 접근 시간과 수정 시간을 변경하는 여러 함수가 있다. futimens 함수와 utimensat 함수로는 timespec 구조체를 이용해서 타임스탬프를 나노초 단위로 지정할 수 있다.

utimes 함수는 경로이름에 대해 작동한다.



4.21 mkdir, mkdirat, rmdir  함수


디렉터리를 생성할 때에는 mkdir 함수나 mkdirat 함수를 사용하고 삭제할 때에는 rmdir 함수를 사용한다.



4.22 디렉터리 읽기


디렉터리에 대한 읽기 권한이 있다면 누구라도 디렉터리를 읽을 수 있다. 그러나 디렉터리에 대한 쓰기는 오직 커널만 할 수 있다.


도해 4.22 디렉터리 계통구조를 재귀적으로 따라 내려가면서 종류별 파일 개수를 세는 프로그램



4.23 chdir, fchdir, getcwd  함수


프로세스가 자신의 현재 작업 디렉터리를 변경할 때에는 chdir나 fchdir 함수를 호출한다. 호출이 성공하면 pathname 인수로 지정된 경로이름 또는 fd 인수로 지정된 열린 파일 서술자에 해당하는 디렉터리가 현재 작업 디렉터리가 된다.

getcwd 함수는 프로그램 시동 시의 파일 시스템 위치로 돌아가야 하는 응용 프로그램에 유용하다.



4.24 장치특수파일


stat 구조체의 st_dev 필드와 st_rdev 필드를 혼동하는 경우가 흔히 있다. 한 시스템의 모든 파일이름에 대해 st_dev 값은 그 파일이름 및 해당 i-노드를 담은 파일 시스템의 장치 번호이다. st_rdev 값은 문자 특수 파일과 블록 특수 파일에만 존재한다. 이 값에는 실제 장치의 장치 번호가 들어 있다.



4.25 파일 접근 권한 비트 정리


S_IRWXU = S_IRUSR | S_IWUSR | S_IXUSR

S_IRWXG = S_IRGRP | S_IWGRP | S_IXGRP

S_IRWXO = S_IROTH | S_IWOTH | S_IXOTH



4.26 요약


파일과 디렉터리의 모든 속성을 상세히 이해하고 그 속성들에 대해 작동하는 모든 함수를 상세히 파악하는 것은 UNIX 프로그래밍에서 필수적인 요건이다.


728x90

댓글