12-高级IO

来源:互联网 发布:手机编辑字幕软件 编辑:程序博客网 时间:2024/06/12 00:00

学习12章内容,掌握下面的知识点:非阻塞IO,记录锁,IO多路select & poll,readv & writev函数,mmap

  • 非阻塞IO

想要对给定的描述符进行非阻塞读写,有2种制定方法:

  1. 在open函数中,指定O_NONBLOCK标志
  2. 对于已经打开的文件描述符,可以调用fcntl函数来打开O_NONBLOCK标志
  • 记录锁

记录锁可以组织其他进程修改同一文件区

  1. fcntl记录锁

          int fcntl(int filedes, int cmd, ... /*struct flock *flockptr*/)。cmd是F_GETLK,F_SETLK,F_SETLKW

          struct flock {

          short l_type; /*F_RDLCK,F_WRLCK,F_UNLCK*/

          ... 

          }         

多个进程在一个给定字节上的写锁则只能由一个进程独用

如果在一个给定字节上已经有一把或多把读锁,则不能在该字节上再加写锁

如果在一个字节上已经有一把独占性的写锁,则不能再对它加任何读锁

加读锁时,该描述符必须是读打开,加写锁时,该描述符必须是写打开

  1. 锁的隐含继承和释放
  • IO多路
  • 异步IO
  • readv & writev
  • readn & writen
  • mmap
原创粉丝点击