Manpages

이 름

read − 파 일 기 술 자 (file descriptor)를 통 해 서 읽 어 들 인 다 .

사 용 법

#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);

설 명

read()는 파 일 기 술 자 fd에 서 buf로 시 작 하 는 버 퍼 에 count 바 이 트 까 지 읽 기 를 시 도 한 다 .

만 일 count가 0이 라 면 read()는 0을 반 환 하 며 다 른 결 과 는 가 지 지 않 는 다 . 만 일 count가 SSIZE_MAX보 다 크 다 면 , 결 과 는 예 측 할 수 없 다 .

반 환 값

성 공 시 , 읽 은 바 이 트 수 를 반 환 하 며 (0은 파 일 의 끝 을 나 타 낸 다 .) 파 일 포 인 터 의 위 치 는 읽 은 수 만 큼 이 동 된 다 . 만 일 이 수 가 요 구 된 바 이 트 의 수 보 다 작 더 라 도 에 러 는 아 니 다 ; 이 것 은 실 제 로 즉 시 이 용 할 수 있 는 바 이 트 가 거 의 없 기 때 문 이 거 나 (아 마 도 이 것 은 파 일 의 끝 이 어 서 닫 았 거 나 파 이 프 나 단 말 기 에 서 읽 기 때 문 이 다 .) read()가 어 떤 신 호 에 의 해 인 터 럽 트 가 되 었 기 때 문 이 다 .

에 러 시 , −1을 리 턴 하 며 errno는 적 당 한 값 으 로 설 정 된 다 . 이 경 우 파 일 포 인 터 의 위 치 가 바 뀔 지 어 떨 지 는 예 측 할 수 없 다 .

에 러

EINTR

어 떤 데 이 터 를 읽 기 도 전 에 함 수 가 신 호 에 의 해 인 터 럽 트 되 었 다 .

EAGAIN

넌 -블 록 킹 I/O가 O_NONBLOCK을 사 용 하 여 선 택 되 어 졌 고 즉 시 읽 을 수 있 는 데 이 터 가 없 다 .

EIO

I/O 에 러 . 이 것 은 백 그 라 운 드 프 로 세 스 그 룹 에 있 는 프 로 세 스 가 제 어 되 는 tty 단 말 기 에 서 읽 기 를 시 도 할 때 , 그 리 고 이 것 이 무 시 되 거 나 봉 쇄 되 는 SIGTTIN이 거 나 또 는 프 로 세 스 그 룹 이 고 아 일 때 일 어 난 다 . 또 한 디 스 크 나 테 이 프 에 서 읽 는 동 안 저 레 벨 (low-level) I/O 에 러 가 있 을 때 일 어 난 다 .

EISDIR

fd가 디 렉 토 리 를 가 리 킨 다 .

EBADF

fd가 유 효 한 파 일 기 술 자 가 아 니 거 나 읽 기 위 해 열 려 지 지 않 았 다 .

EINVAL

fd가 읽 기 에 적 당 하 지 않 은 객 체 와 연 결 되 었 다 .

EFAULT

buf는 접 근 할 수 없 는 주 소 공 간 을 가 리 키 고 있 다 .

fd에 접 속 된 객 체 에 의 존 하 여 다 른 에 러 가 일 어 날 수 있 다 . POSIX는 데 이 터 일 부 를 읽 은 후 인 터 럽 트 되 었 을 경 우 read가 −1이 나 ( errno는 EINTR로 설 정 된 다 .) 이 미 읽 은 바 이 트 의 수 를 리 턴 하 도 록 허 용 한 다 .

호 환

SVr4, SVID, AT&T, POSIX, X/OPEN, BSD 4.3

RESTRICTIONS

NFS 파 일 시 스 템 에 서 , 읽 은 적 은 양 의 데 이 터 는 단 지 처 음 타 임 스 탬 프 에 서 만 갱 신 되 며 연 속 적 인 콜 은 그 렇 게 하 지 않 는 다 . 이 것 은 캐 싱 (caching)하 는 클 라 이 언 트 쪽 특 성 때 문 인 데 , 모 든 NFS 클 라 이 언 트 가 서 버 에 접 근 시 간 (atime) 갱 신 을 하 지 는 않 으 며 클 라 이 언 트 쪽 캐 쉬 에 서 읽 기 를 한 클 라 이 언 트 는 서 버 쪽 읽 기 가 없 기 때 문 에 서 버 에 접 근 시 간 갱 신 을 하 지 않 기 때 문 이 다 . UNIX 구 문 은 클 라 이 언 트 쪽 캐 싱 특 성 을 불 가 능 하 게 하 여 얻 어 지 며 이 것 은 대 부 분 의 상 황 에 서 서 버 부 하 를 증 가 시 키 고 성 능 을 감 소 시 킨 다 .

관 련 항 목

close(2), fcntl(2), ioctl(2), lseek(2), readdir(2), readlink(2), select(2), write(2), fread(3)

역 자

정 강 훈 <skyeyes [AT] soback.net>, 2000년 5월 28일