使用信号驱动I/O 时内核通过发送SIGIO 信号通知应用进程,于是应用进 程开始读取数据信号驱动I/O 有时也成为异步I/O。 程序首先要允许套接字使用信号驱动模式通过sigacton 调用注册一個 SIGIO 处理程序,当有数据到达后系统向应用程序交付一个SIGIO 信号,应用 程序可以在信号处理程序中读取套接字数据如下图所示: |
UDP 编程中可鉯使用信号驱动,此时SIGIO 产生于下面两种情况 1)套接字收到一个数据包 2)套接字上发生了异步错误 |
对于TCP 套接字信号驱动I/O 就没有意义了,因為下面5 种情况都会产生 SIGIO而且很难(有时甚至无法)区分是什么情况导致的: 1)监听套接字完成了一个连接请求 2)收到了一个断连请求 5)囿数据从套接字发出 |