File I/O
- open, read, write, close ...
File Table
- 커널영역에 존재하는 open file들에 대한 list이다.
- 프로세스마다 하나씩 보유한다.
- file discriptors 라고 하는 integer으로 접근이 가능하다.
- File Table의 각 요소들은 파일에 대한 다음의 정보들을 가지고 있다.
- inode
- File offset
- Access modes
File discriptor
- C 언어에서는 integer type을 하고 있다.
- 0부터 시작해 1씩 증가하며 파일들의 위치를 가르킨다.
- 일반적인 파일 이외에도 IO 디바이스, pipes, directories, socket들도 관리할 수 있다.
IO함수
파일 열기: open()
int open(const char *name, int flags)
int open(const char *name, int flags, mode_t mode) //O_CREAT 전용
- return: 성공시 fd 반환, 오픈 실패시 -1 반환하고 errno에 적절한 값 세팅
- name: 열고자 하는 파일 이름 (절대경로, 상대경로 모두 가능)
- flags: 필수적인 요소 1개와 optional 한 요소 들을 | 으로 조합하여 만들 수 있다.
파일 열기(+생성): creat()
int creat(const char *name, mode_t mode)
// open(file, O_WRONLY|O_CREAT|O_TRUNC, mode) 와 동일
- return: 성공시 fd, 실패시 -1반환과 errno 세팅