高级I/O
可设置超时时间
read和write的三个变体:
1) recv send : 通过第四个参数从进程到内核传递标志
2) readv writev : 允许指定往其中输入数据或从其中输出数据的缓冲区向量.
3) recvmsg sendmsg: 结合了其他I/O函数的所有特性,并具备接收和发送辅助数据的新能力.
套接字超时
在套接字I/O上设置超时有3种方法:
1) 调用alarm (信号处理)
它在指定超时期满时产生SIGALRM信号.
相应的函数,如 connect, recvfrom 会被终端, 并设置errno=EINTR
2) 使用select (有设置时限功能)
3) 使用较新的套接字选项: SO_RCVTIMEO SO_SNDTIMEO. 但是并非所有时限都支持.
超时发生时, errno=EWOULDBLOCK
recv send
比read write多一个参数flag.
readv writev
允许单个系统调用读入到或写出自一个或多个缓冲区.成为 分散读和集中写. (没理解)
recvmsg sendmsg
最通用的I/O函数. read readv recv recvfrom 都可以替换成recvmsg.