Manpages

이 름

sendfile − 데 이 타 와 파 일 디 스 크 립 터 사 이 의 전 송 .

사 용 법

#include <sys/sendfile.h>

ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count)

설 명

이 것 은 하 나 의 파 일 디 스 크 립 터 와 다 른 파 일 디 스 크 립 터 사 이 의 복 사 본 데 이 타 를 호 출 한 다 . 이 것 들 중 하 나 혹 은 둘 모 두 는 소 켓 과 관 련 될 런 지 모 른 다 . in_fd 는 읽 기 위 해 열 린 파 일 디 스 크 립 터 이 고 , out_fd 는 쓰 기 위 해 열 린 디 스 크 립 터 이 어 야 한 다 . offsetsendfile(2) 가 데 이 타 를 읽 기 시 작 할 입 력 파 일 포 인 터 지 점 을 가 진 변 수 포 인 터 이 다 . sendfile 이 반 환 할 때 , 이 변 수 는 읽 혀 진 마 지 막 바 이 트 를 따 르 는 바 이 트 의 offset에 설 정 될 것 이 다 . count 는 파 일 디 스 크 립 터 사 이 의 복 사 를 위 한 바 이 트 양 이 다 .

주 의

Sendfile은 in_fd 의 현 재 파 일 포 인 터 를 수 정 하 진 못 하 지 만 , out_fd 은 수 정 한 다 .

당 신 이 TCP 소 켓 으 로 파 일 을 보 내 기 위 해 sendfile사 용 을 계 획 하 지 만 파 일 내 용 의 앞 부 분 에 몇 개 의 헤 더 데 이 타 를 보 낼 필 요 가 있 다 면 , 패 킷 의 수 를 최 소 화 하 고 실 행 튜 닝 을 위 해 tcp(7)TCP_CORK 옵 션 을 본 다 .

반 환 값

전 송 이 성 공 하 면 , out_fd 에 기 록 된 바 이 트 수 가 반 환 된 다 . 에 러 시 , −1이 반 환 되 고 , errno 는 적 절 히 설 정 된 다 .

에 러

EBADF

입 력 파 일 이 읽 기 위 해 열 리 지 않 았 거 나 출 력 파 일 이 쓰 기 위 해 열 리 지 않 았 다 .

EINVAL

디 스 크 립 터 가 유 효 하 지 않 거 나 잠 겼 다 .

ENOMEM

in_fd 에 서 읽 기 위 한 메 모 리 가 부 족 하 다 .

EIO

in_fd 에 서 읽 는 동 안 예 상 외 의 에 러 가 생 겼 다 .

버 전 S

sendfile 은 리 눅 스 2.2의 새 로 운 기 능 이 다 .

다 른 유 닉 스 에 서 는 종 종 다 른 semantics와 프 로 토 타 입 을 가 진 sendfile 를 구 현 한 다 . 그 것 은 이 식 가 능 한 프 로 그 램 에 사 용 되 지 않 아 야 한 다 .

관 련 항 목

socket(2), open(2)

역 자

ASPLINUX<man [AT] asp-linux.kr>, 2000년 7월 26일