이 름
write − 파 일 기 술 자 가 가 리 키 는 파 일 에 쓴 다 .
사 용 법
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
설 명
write는 buf로 시 작 하 는 버 퍼 에 서 파 일 기 술 자 fd로 참 조 되 는 파 일 에 count 바 이 트 까 지 를 쓴 다 . POSIX는 write()가 반 환 된 후 새 로 운 데 이 터 가 반 환 될 수 있 다 는 것 을 증 명 하 도 록 read()를 요 구 한 다 . 모 든 파 일 시 스 템 이 POSIX를 따 르 지 는 않 는 다 .
반 환 값
성 공 시 , 쓰 여 진 바 이 트 수 를 반 환 한 다 (0은 쓰 여 진 것 이 없 음 을 나 타 낸 다 .) 에 러 라 면 , −1을 반 환 하 며 errno는 적 당 한 값 으 로 설 정 된 다 . 만 일 count가 0이 고 파 일 기 술 자 가 정 규 파 일 을 가 리 킨 다 면 0은 다 른 결 과 를 야 기 시 키 지 않 고 반 환 된 다 . 특 수 파 일 에 서 의 결 과 는 호 환 되 지 않 는 다 .
에 러
EBADF |
fd가 유 효 한 파 일 기 술 자 가 아 니 거 나 쓰 여 지 기 위 해 열 려 지 지 않 았 다 . | ||
EINVAL |
fd가 쓰 기 에 적 당 하 지 않 은 객 체 와 연 결 되 었 다 . | ||
EFAULT |
buf가 접 근 할 수 없 는 주 소 공 간 을 가 리 키 고 있 다 . | ||
EPIPE |
fd가 읽 을 끝 이 닫 혀 진 소 켓 이 나 파 이 프 에 연 결 되 었 다 . 이 것 은 쓰 고 있 는 프 로 세 스 가 SIGPIPE 신 호 를 받 았 을 때 일 어 난 다 ; 이 것 이 잡 히 고 , 봉 쇄 나 무 시 되 면 EPIPE 에 러 가 리 턴 된 다 . | ||
EAGAIN |
넌 -블 록 킹 I/O가 O_NONBLOCK을 사 용 하 였 고 즉 시 데 이 터 를 쓰 기 위 해 fd와 연 결 된 파 이 프 나 소 켓 에 공 간 이 없 다 . | ||
EINTR |
어 떤 데 이 터 를 쓰 기 전 에 시 스 템 콜 이 어 떤 신 호 에 의 해 인 터 럽 트 되 었 다 . | ||
ENOSPC |
fd로 참 조 되 는 파 일 을 포 함 하 는 장 치 가 데 이 터 를 위 한 공 간 이 없 다 . | ||
EIO |
inode를 수 정 하 는 동 안 저 레 벨 I/O 에 러 가 일 어 났 다 . |
fd와 연 결 된 객 체 에 의 존 하 여 다 른 에 러 가 일 어 날 수 있 다 .
호 환
SVr4, SVID, POSIX, X/OPEN, 4.3BSD. SVr4 문 서 에 는 EDEADLK, EFBIG, ENOLCK, ENOLNK, ENOSR, ENXIO, EPIPE, ERANGE의 새 로 운 에 러 조 건 이 추 가 되 었 다 . SVr4에 서 는 데 이 터 가 실 제 로 쓰 여 지 기 이 전 어 느 시 점 에 서 도 쓰 기 작 업 이 인 터 럽 트 되 어 EINTR 값 이 반 환 될 수 있 다 .
관 련 항 목
open(2), read(2), fcntl(2), close(2), lseek(2), select(2), ioctl(2), fsync(2), fwrite(3)
역 자
정 강 훈 <skyeyes [AT] soback.net>, 2000년 5월 29일