[Computer Network] 리눅스 기반 파일 API

G·2023년 3월 15일
0

Socket Programming

목록 보기
2/6

소켓 프로그래밍에서 송수신된 데이터는 소켓에 저장된다고 하였다. 이를 read, write 함수를 통해 수행했었는데, 리눅스 기반의 파일에 write, read 하는 방식과 똑같다.

리눅스의 파일 처리를 먼저 알아보자.

파일 디스크립터란 파일을 관리하는 키이다. 0,1,2는 표준 입출력과 표준 에러에 이미 부여됐으며 파일 또는 소켓을 관리할 때 3번부터 번호가 부여된다.

file open

int open(const char *path, int flag)

성공 시 파일 디스크립터, 실패 시 -1 반환
path: 파일 이름
flag: 오픈 모드(쓰기, 읽기 등)

file close

int close(int fd);

성공 시 0, 실패 시 -1 반환
fd: 닫고자 하는 파일의 디스크립터

write

ssize_t(int fd, const void *buf, size_t nbytes)

성공 시 전달한 바이트 수, 실패 시 -1 반환
fd: 파일 디스크립터
buf: 전송할 데이터가 담긴 버퍼의 주소
nbytes: 전송할 데이터의 크기

read

ssize_t read(int fd, void *buf, size_t nbytes)

성공 시 읽어온 바이트 수(파일의 끝이면 0), 실패 시 -1 반환
fd: 파일 디스크립터
buf: 데이터를 읽어올 버퍼
nbytes: 전송할 데이터의 크기

profile
열심히 안 사는 사람

0개의 댓글