Manpages

이 름

readv, writev − 벡 터 를 읽 거 나 쓴 다 .

사 용 법

#include <sys/uio.h>

int readv(int fd, const struct iovec * vector, int count);

int writev(int fd, const struct iovec * vector, int count);

struct iovec {
__ptr_t
iov_base; /* 시 작 주 소 */
size_t
iov_len; /* 바 이 트 수 길 이 */
};

설 명

readv 는 파 일 기 술 자 fd 에 서 데 이 터 를 읽 고 , 그 리 고 결 과 를 vector 가 가 리 키 고 있 는 버 퍼 에 넣 는 다 . 버 퍼 의 숫 자 는 count 에 의 해 지 정 된 다 . 버 퍼 는 지 정 된 순 서 로 채 워 진 다 . 데 이 터 가 연 속 적 인 버 퍼 대 신 에 vector 에 넣 어 지 는 것 을 제 외 하 고 read 처 럼 작 동 한 다 .

writevvector 가 가 리 키 고 있 는 버 퍼 에 서 파 일 기 술 자 fd 에 데 이 터 를 쓴 다 . 버 퍼 의 숫 자 는 count 에 의 해 지 정 된 다 . 버 퍼 는 지 정 된 순 서 로 사 용 된 다 . 데 이 터 를 연 속 적 인 버 퍼 대 신 에 vector 에 서 가 져 오 는 것 을 제 외 하 고 write 처 럼 작 동 한 다 .

반 환 값

성 공 시 , readv 는 읽 은 바 이 트 수 를 반 환 한 다 . 성 공 시 , writev 는 쓰 여 진 바 이 트 의 수 를 반 환 한 다 . 에 러 시 , −1이 리 턴 되 고 errno 는 적 당 한 값 으 로 설 정 된 다 .

에 러

EINVAL

유 효 하 지 않 은 인 자 가 주 어 졌 다 . 예 를 들 어 countMAX_IOVEC, 또 는 0보 다 크 다 . fd 가 읽 거 나 (readv) 쓰 기 (writev) 에 알 맞 지 않 은 객 체 와 연 결 되 어 있 다 .

EFAULT

"Segmentation fault." 대 체 로 vectoriov_base 의 몇 몇 포 인 터 들 이 올 바 르 게 할 당 되 지 않 은 메 모 리 를 가 리 키 고 있 다 .

EBADF

파 일 기 술 자 fd 가 유 효 하 지 않 다 .

EINTR

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

EAGAIN

Non-blocking I/O 가 O_NONBLOCK 를 사 용 하 여 선 택 되 어 졌 고 읽 기 위 해 즉 시 이 용 할 수 있 는 데 이 터 가 없 다 . (또 는 파 일 기 술 자 fd가 잠 겨 져 있 는 객 체 를 위 한 것 이 다 .)

EISDIR

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

EOPNOTSUP

fd 가 읽 기 /쓰 기 가 지 원 되 지 않 는 소 켓 이 나 장 치 를 가 리 킨 다 .

ENOMEM

이 용 할 수 있 는 커 널 메 모 리 가 충 분 하 지 않 다 .

fd 와 연 결 된 객 체 에 의 존 하 여 다 른 에 러 들 이 발 생 할 수 있 다 .

호 환

4.4BSD ( readv 그 리 고 writev 함 수 는 BSD 4.2에 서 처 음 나 타 났 다 ), Unix98. Linux libc5 는 count 인 자 의 타 입 으 로 써 size_t 를 사 용 하 였 다 . 이 것 은 타 당 하 지 만 표 준 은 아 니 다 .

관 련 항 목

read(2), write(2), fprintf(3), fscanf(3)

역 자

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