高级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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • APR分析-高级IO篇 近两天稍轻闲了些,便抓紧时间学习、学习再学习。在“APR分析-文件IO篇”,我们只分析了最...
    偷风筝的人_阅读 1,518评论 0 1
  • 非阻塞IO,记录锁,系统V流机制,IO多路转接,readv和writev存储映射IO(mmap) pipe/soc...
    狼之足迹阅读 396评论 0 1
  • [TOC] Linux 高级IO 涉及到一些IO的高级用法 文件描述符重定向 dup 函数从当前可用的文件描述符中...
    ITriangle阅读 524评论 0 0
  • 上一篇《聊聊同步、异步、阻塞与非阻塞》[https://www.jianshu.com/p/aed6067eeac...
    七寸知架构阅读 140,387评论 57 445
  • 春天到了,黑妞长成大妞了。想想日子过得真是愉快啊!每天和小伙伴们一起捉捉虫子,晒晒太阳,做做运动。还有最高兴的就是...
    于桐阅读 437评论 3 1