open
- 파일을 열고 file descriptor 반환
file descriptor
- 실행중인 프로그램과 하나의 파일 사이에 연결된 개방 상태
- 음수가 아닌 정수형 값
- 파일 개방이 실패하면 -1이 됨
- 커널에 의해서 관리
- path: 개방할 파일의 경로 이름을 가지고 있는 문자열의 포인터
- oflags: 파일의 개방 방식 지정
- mode: 파일 오픈 모드
O_RDONLY
: 읽기 전용O_WRONLY
: 쓰기 전용O_RDWR
: 둘 다 가능O_EXCL
: 이미 존재하는 파일을 개방할 때 개방을 막음O_CREAT
: 파일이 존재하지 않을 경우 파일 생성O_APPEND
: 파일의 맨 끝에 내용 추가만 가능O_TRUNC
: 파일을 생성할 때 이미 있는 파일이고, 쓰기 옵션으로 열었으면 내용을 모두 지우고 파일의 길이를 0으로 변경O_NONBLOCK/O_NDELAY
: 비블로킹(non-blocking) 입출력 옵션으로 파일을 읽거나 쓰고 난 후의 동작에 영향을 준다. 디스크의 파일 입출력보다는 FIFO 같은 특수 파일의 입출력에 의미가 있다. 디스크인 경우 읽거나 쓸 데이터가 없으면-1
을 리턴한다.O_SYNC/O_DSYNC:
파일에 쓰기 동작을 할 때 보통 버퍼에만 쓰고 나중에 디스크와 같은 저장 장치로 옮겨쓰는데, 이 옵션이 설정되어 있으면 저장 장치에 쓰기를 마쳐야 쓰기 동작을 완료한다.O_SYNC
플래그는 파일의 수정 시각 속성도 수정할 때까지 기다린다. 이 옵션을 설정하면 프로그램의 실행 속도는 느려질 수 있지만 디스크에 확실하게 저장됨을 보장한다.
close
- 파일 닫기
read
- 파일 읽기
lseek
- 지정한 파일에 대해서 read/write 포인터의 위치를 임의로 변경한다.
read/write pointer
- 개방된 파일 내에서 읽기 작업이나 쓰기 작업을 수행할 바이트 단위의 위치
- 특정 위치를 기준으로 한 상대적인 위치 -> Offset이라고 부름
- 파일을 개방한 직후 read/write pointer는 0, 읽거나 내용 추가시 늘어남
- lseek을 활용해 다양한 코드를 작성할 수 있다.
-
파일 크기 구하기
-
파일의 내용을 읽고 소문자를 대문자로 치환하기
-
umask
access
pathname
: 파일에 대한 경로이름이다.mode
: 검사하려는 접근 권한으로R_OK
,W_OK
,X_OK
,F_OK
를 사용할 수 있다.
link, symlink
지정한 파일에 대한 하드 링크(link)와 소프트 링크(symlink)를 생성한다.
oldpath
: 원본 파일의 경로 이름이다.newpath
: 하드 링크/소프트 링크의 경로 이름이다.- 반환값: 호출이 성공하면 0을 반환하고, 실패하면 -1을 반환한다.
ls -l
의 정보는 i-node 블록에 저장됨.
- 하드링크 -> 같은 파일(같은 i-node 블록을 공유)인데 파일 이름만 다른 것
- 소프트링크(심볼릭 링크) -> 원본파일의 경로를 가리킴
readlink
소프트 링크 파일의 실제 내용을 읽는다
path
: 소프트 링크에 대한 경로 이름이다.buf
: 소프트 링크의 실제 내용을 담을 공간이다.bufsize
: buf의 크기이다
stat
지정한 파일에 대한 상세한 정보를 알아온다.