READV
Section: 리눅스 프로그래머 매뉴얼 (2)
Updated: 1999년 1월 20일
Index
Return to Main Contents
이름
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 처럼 작동한다.
writev 는 vector 가 가리키고 있는 버퍼에서
파일 기술자 fd 에 데이터를 쓴다.
버퍼의 숫자는 count 에 의해 지정된다. 버퍼는 지정된 순서로 사용된다.
데이터를 연속적인 버퍼 대신에
vector 에서 가져오는것을 제외하고
write 처럼 작동한다.
반환값
성공시, readv 는 읽은 바이트수를 반환한다.
성공시, writev 는 쓰여진 바이트의 수를 반환한다.
에러시, -1이 리턴되고 errno 는 적당한 값으로 설정된다.
에러
- EINVAL
-
유효하지 않은 인자가 주어졌다. 예를 들어 count 가
MAX_IOVEC, 또는 0보다 크다.
fd 가 읽거나(readv) 쓰기(writev) 에 알맞지 않은 객체와
연결되어 있다.
- EFAULT
-
"Segmentation fault." 대체로 vector 나
iov_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@soback.kornet.net>, 2000년 8월 7일
Index
- 이름
-
- 사용법
-
- 설명
-
- 반환값
-
- 에러
-
- 호환
-
- 관련 항목
-
- 역자
-
This document was created by
man2html,
using the manual pages.
Time: 08:06:58 GMT, March 25, 2004