套接字超时
1 设置alarm,在指定时间到达后产生SIGALARM信号
2 select支持timeout选项
3 使用SO_RECVTIMEO SOSNDTIMEO
上述的三个套接字是在通信时如send recv时可用,而在连接时(默认超时75s)则只能使用select方式。
标准IO(c语言的)
使用时需要注意缓冲:
1 完全缓冲,只有当缓冲区满了再输出
2 行缓冲 在遇到了换行符后就调用fflush
3 不缓冲
规则:标准错误不缓冲,标准输入、输出是完全缓冲,终端设备是行缓冲,其他IO流都是完全缓冲。
所以套接字是完全缓冲的,可使用setvbuf使得这个输出流变为完全缓冲的,或者在每次输出后调用fflush来强制输出,最好是干脆就不用标准IO。
高级轮询
/dev/poll
select或poll使用时每次都得传递待查询的文件描述符,使用/dev/poll则可以预先设置好待查询的描述符列表,在调用之间维持状态。