̾??
write
, writev
,
pwrite
—
???Ϥν?????
Standard C Library (libc, -lc)
<sys/types.h>
<sys/uio.h>
<unistd.h>
ssize_t
write
(int
d, const void *buf, size_t
nbytes) ssize_t
writev
(int d,
const struct iovec *iov, int
iovcnt) ssize_t
pwrite
(int d,
const void *buf, size_t nbytes,
off_t offset)
write
()
?????ƥॳ?????ϡ? buf
???ؤ??Хåե????鵭?һ?
d ?????Ȥ??륪?֥??????Ȥ?
nbytes
?Υǡ????????⤦?Ȥ??ޤ???
writev
()
?????ƥॳ??????Ʊ?ͤ?ư???ޤ?????iov[0],
iov[1], ..., iov[iovcnt-1] ?Ȥ??? iov
?????Υ????Ф????ꤹ?? iovcnt
?Хåե????????ϥǡ??????ޤ???
pwrite
()
?????ƥॳ??????Ʊ????ǽ???¹Ԥ??ޤ??????ե??????ݥ????????????ˡ?
?ե????????????????˽??ߤޤ???
writev
()
?Ǥϡ? iovec
??¤?Τ??ʲ??Τ褦???????????Ƥ??ޤ?:
struct iovec {
void *iov_base; /* ?١??????ɥ쥹 */
size_t iov_len; /* Ĺ?? */
};
?? iovec
?????ȥ??ϡ??????ǡ????????????????Υ١??????ɥ쥹??
?ΰ???Ĺ???????ꤷ?ޤ???
writev
()
?????ƥॳ?????ϡ??????ΰ????Τ??????Ǥ??鼡?˿ʤߤޤ???
????????ǽ?????륪?֥??????ȤǤϡ?
write
() ??
d
?˴?Ϣ?????ݥ??????ꤹ?????֤dz??Ϥ??ޤ???
lseek(2)
?Ȥ??Ƥ????????? write
()
?????????ȡ??ݥ??Ͻ??ޤ줿?Х??ȿ??????ʤߤޤ???
????????ǽ???ʤ????֥??????ȤǤϡ????˸??߰??֤??????ߤޤ???
???Τ褦?ʥ??֥??????Ȥ˴?Ϣ?????ݥ????ͤ?̤?????Ǥ???
?¥桼?????????ѥ桼???Ǥʤ????硢
write
()
?ϡ??桼?? ID
?????ӥåȤ??ե??????ǥ??ꥢ???ޤ???
?????ˤ??ꡢ?????ѥ桼??????ͭ?????????߲?ǽ?ʥ桼??
ID ?????ե??????? “?ᤨ??”
?桼???ϡ??????ƥॻ???????ƥ??????ˤǤ??ʤ??ʤ??ޤ???
?????åȤΤ褦?ˡ??ե????????αƶ????????륪?֥??????Ȥ?
???֥??å????? I/O ?????Ѥ????ȡ?
write
() ??
writev
()
?ϡ??ᤷ?????꾯?ʤ??Х??ȿ??????ळ?Ȥ??????ޤ???
?????ͤ????դ?????ǽ?ʾ????ˤϥ??ڥ졼???????λĤ??????ٻ?Ƥ?????????
???????????˴?λ?????ȡ????ޤ줿?Х??ȿ????֤????ޤ???
?????Ǥʤ??????? -1
???֤??졢???顼???????˥??????Х??ѿ?
errno ?????ꤵ???ޤ???
write
(), writev
()
?????? pwrite
()
?????ƥॳ?????ϡ??ʲ??ξ????˥??顼?Ȥʤꡢ
?ե??????ݥ????ѹ????줺?˻Ĥ??ޤ?:
- [
EBADF
]
- d
???????????????Ѥ˳????줿ͭ???ʵ??һҤǤϤ????ޤ?????
- [
EPIPE
]
- ?ץ??????ˤ????ɼ????Ѥ˳??????Ƥ??ʤ??ѥ??פ˽??⤦?Ȥ??ޤ?????
- [
EPIPE
]
- ?̿??????Υ????åȤ???³???Ƥ??ʤ???????
SOCK_STREAM
?Υ????åȤ˽??⤦?Ȥ??ޤ?????
- [
EFBIG
]
- ?ץ??????Υե????륵???????¤??????ե????륵???????ۤ????ե???????
???⤦?Ȥ??ޤ?????
- [
EFAULT
]
- iov
?ΰ??????ޤ??ϥե??????˽????ǡ????ϡ?
?ץ??????˳??????Ƥ??줿???ɥ쥹???֤??ϰϳ????ؤ??Ƥ??ޤ???
- [
EINVAL
]
- d
?˴?Ϣ?????ݥ??????ˤʤäƤ??ޤ???
- [
ENOSPC
]
- ?ե????????ޤ??ե????륷???ƥ??ˡ???ʬ?ʥ??ڡ??????ĤäƤ??ޤ?????
- [
EDQUOT
]
- ?ե????????ޤ??ե????륷???ƥ??Υ桼???Υǥ??????֥??å??????̤?
?Ȥ??Ԥ??????Ƥ??ޤ???
- [
EIO
]
- ?ե????륷???ƥ????ɤ߽??Ƥ????֤??????ϥ??顼??ȯ?????ޤ?????
- [
EINTR
]
- ?????ߤ???λ???????˥????ʥ뤬???????ߤޤ?????
- [
EAGAIN
]
- ?ե??????????֥??å??????????Ϥΰ????Ĥ??????֤ǡ??????⡢
?????˥ǡ??????????????֤ǤϤ????ޤ?????
- [
EROFS
]
- ???饤??????Ƭ?ˤ????ǥ????????٥??ΰ??˽????ߤ??Ԥ????Ȥ??ޤ?????
?ǥ????????٥??ΰ??ؤν????ߤ?ͭ???ˤ????ˤ?
disklabel(8)
-W
?Ȥ??Ƥ?????????
writev
()
?ϡ??ʲ??Υ??顼???᤹???Ȥ??????ޤ?:
- [
EDESTADDRREQ
]
- connect(2)
?????Ѥ??ƽ??????襢?ɥ쥹?????ꤷ??
UNIX
?ɥᥤ???ǡ????????ॽ???åȤ˽????????ˡ????????褬???ѤǤ??ޤ?????
- [
EINVAL
]
- iovcnt ?????? 0
?ʲ??ˤʤäƤ??뤫??
IOV_MAX
???ꡢ?礭???ʤäƤ??ޤ???
- [
EINVAL
]
- iov ???? iov_len ?ͤ? 1
?Ĥ????ˤʤäƤ??ޤ???
- [
EINVAL
]
- iov ???? iov_len
?ͤι??פ???32
?ӥå????????Хե??????ޤ?????
- [
ENOBUFS
]
- ?????åȤ˽Ф??Ƥ??????? mbuf
?Υס??????Ȥ??Ԥ????ޤ?????
pwrite
()
?????ƥॳ?????ϡ??ʲ??Υ??顼???᤹???Ȥ??????ޤ?:
- [
EINVAL
]
- offset ???ͤ????Ǥ???
- [
ESPIPE
]
- ?ե????뵭?һҤ????ѥ??ס??????åȡ?FIFO
?˴?Ϣ???Ƥ??ޤ???
write
()
?????ƥॳ?????ϡ? IEEE Std 1003.1-1990
(“POSIX.1”) ??Ŭ?礷?Ƥ??ޤ???
writev
() ?????ƥॳ??????
pwrite
() ?????ƥॳ?????ϡ?
X/Open Portability Guide Issue 4, Version 2
(“XPG4.2”)
??Ŭ?礷?Ƥ??ޤ???
pwrite
() ?ؿ??ϡ?
AT&T System V Release 4 UNIX
???о줷?ޤ????? writev
()
?????ƥॳ?????ϡ? 4.2BSD
???о줷?ޤ????? write
()
?ؿ??ϡ? Version 6 AT&T UNIX
???о줷?ޤ?????