高级IO

套接字超时

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则可以预先设置好待查询的描述符列表,在调用之间维持状态。

kqueue

你可能感兴趣的:(高级IO)