̾??
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
???о줷?ޤ?????