File Descriptor
개념
유닉스 시스템에서의 모든 객체는 파일이라 명명한다. 파일에 접근하기위해서 부여하는 음이 아닌 정수값을 File Disciptor(이하 fd)라고 부른다. 파일 오픈시에 커널에서는 global file table에 entry를 만들고 이 fd값을 반환한다. 시스템콜이 발생할 때 사용된다.
fd는 global file table을 레퍼런스한다. 이는 inode table, data stream, byte offset과 같은 정보들을 포함한다.
FD의 디폴트 값 (0, 1, 2)
|FD|Name|Abbreviation| |–|–|–| |0|Standard Input|stdin| |1|Standard Output|stdout| |2|Standard Error|stderr|
open()
file control에 사용되는 헤더이다. open관련 함수를 사용할 수 있다.
#include <fcntl.h>
int open (const char *FILENAME, int FLAGS[, mode_t MODE];
OPTION
FLAGS | Desciption |
---|---|
O_RDONLY | 읽기전용 |
O_WRONLY | 쓰기전용 |
O_RDWR | 읽기쓰기전용 |
O_CREAT | 해당파일이 없다면 생성 |
O_EXCL O_CREAT | 없는 파일이면 만들고 존재하면 error |
O_TRUNC | 파일내용 삭제 |
read()
#include <unistd.h>
ssize_t read(int fd, void *buff, size_t nbytes);
fd참조하여 buff에 nbytes만큼의 값을 저장. return : 글자수. 실패시 -1
OPEN_MAX
fd의 최댓값을 나타낸다.
Terminal에서 OPEN_MAX 값 확인
getconf OPEN_MAX
댓글남기기