파일디스크립터(File Descriptor)
- 리눅스와 유닉스에서 시스템 관리를 위해 파일로 처리하여 관리함
시스템에서 프로세스가 파일에 접근하기 위한 방법으로 파일 디스크립터(File Descriptor)를 핸들로 사용
ex) 파일 open 시 파일 디스크립터는 0~N까지 순차적으로 숫자를 부여 받음, 프로세스가 메모리에서 실행을 시작할 때 기본적으로 할당됨
기본 할당 파일 디스크립터
0 : 표준 입력(Standard Input) / STDIN_FILENO
1 : 표준 출력(Standard Output) / STDOUT_FILENO
2 : 표준 에러(Stantdard Error) / STDERR_FILENO
파일 디스크립터 생성 시 기본 할당 파일 디스크립터를 제외하고 3번 부터 차례대로 할당 받음
Open 함수
ssize_t open(chonst char *pathname, int flags);
헤더 : fcntl.h
pathname : 파일의 경로와 이름으로, 절대경로의 파일명과 상대경로의 파일명 모두 허용
flags : 파일 열기 시 옵션 (읽기 전용 : O_RDONLY, 쓰기 전용 : O_WRONLY)
return 값 : success 시 양수, fail 시 음수
Close 함수
ssize_t close(int fd);
fd : close를 실행하는 프로세서의 fd(파일스크립터) 값을 받음
return 값 : close 성공시 0, 실패라면 -1
Read 함수
ssize_t read(int fd, void *buf, size_t nbytes);
헤더 : unistd.h
fd : 파일 디스크립터
buf : 파일을 읽어 들일 버퍼
nbytes : 버퍼 사이즈
return 값 : success 시 읽어들인 바이트 수, 실패 시 -1 반환
write 함수
ssize_t write(int fd, const void* buf, size_t nbytes);
헤더 : unistd.h
fd : 파일 디스크립터
buf : 파일 쓰기 내용을 담은 버퍼
nbytes : 버퍼 사이즈
return 값 : success 시 bytes 수, 실패 시 -1 반환
참조 open, close, read 함수에 대하여 (tistory.com)
'Ubuntu' 카테고리의 다른 글
GNU/GCC/G++ 컴파일러 (0) | 2023.01.27 |
---|