编程接口指南

中断驱动套接字 I/O

SIGIO 信号会在套接字或任何文件描述符完成数据传送时通知进程。使用 SIGIO 的步骤如下所示:

  1. 使用 signal(3C)sigvec(3UCB) 调用设置 SIGIO 信号处理程序。

  2. 使用 fcntl(2) 设置进程 ID 或进程组 ID,以将信号路由到其自己的进程 ID 或进程组 ID。套接字的缺省进程组为组 0

  3. 将套接字转换为异步,如异步套接字 I/O中所示。

使用以下样例代码,给定进程可以在发生套接字请求时接收有关暂挂请求的信息。添加 SIGURG 的处理程序之后,还可以使用此代码来准备接收 SIGURG 信号。


示例 7–13 异步 I/O 请求通知

#include <fcntl.h>

#include <sys/file.h>

 ...

signal(SIGIO, io_handler);

/* Set the process receiving SIGIO/SIGURG signals to us. */

if (fcntl(s, F_SETOWN, getpid()) < 0) {

  perror("fcntl F_SETOWN");

  exit(1);

}