[C] read 함수와 write 함수
read
SYNOPSIS
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
DESCRIPTION
- read 함수는 filed descriptor로부터 count 만큼의 byte를 buf에 저장한다.
- read 함수가 성공적으로 실행되는 경우:
- buf에는 file descriptor로부터 읽은 데이터가 저장되고,
- file descriptor의 커서는 count 만큼 이동한다.
- read 함수 자체는 읽어들인 byte 갯수를 return 한다.
- read 함수가 반환하는 byte 갯수는 인자인 size_t count 보다 작을 수 있는데, 이는 그 자체로 에러가 아니며, 다음과 같은 경우에 발생할 수 있다.
- count만큼 파일을 읽어들이는 도중 file cursor가 EOF(end-of-file)에 도달한 경우.
- read() 함수가 실행 도중 시그널에 의해 interrupt 된 경우
NOTES
- size_t, ssize_t는 각각 POSIX에서 정하고 있는 unsigned, sigend integer이다.
write
SYNOPSIS
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
DESCRIPTION
- write 함수는 buf로부터 count 만큼의 byte를 읽어들여 fd(file descriptor)가 지정하고 있는 파일에 입력한다.
- write 함수도 read 함수가 읽어들인 byte 갯수를 반환하는 것처럼 fd에 작성한 byte를 반환하는데, 마찬가지로 이 byte 수도 다음과 같은 상황에서 size_t count보다 작을 수 있다.
- disk device에 충분한 공간이 없어서 작성하지 못한 경우
- signal에 의해 write 함수가 interrupt 된 경우