SIGIO 信号会在套接字或任何文件描述符完成数据传送时通知进程。使用 SIGIO 的步骤如下所示:
使用 signal(3C) 或 sigvec(3UCB) 调用设置 SIGIO 信号处理程序。
使用 fcntl(2) 设置进程 ID 或进程组 ID,以将信号路由到其自己的进程 ID 或进程组 ID。套接字的缺省进程组为组 0。
将套接字转换为异步,如异步套接字 I/O中所示。
使用以下样例代码,给定进程可以在发生套接字请求时接收有关暂挂请求的信息。添加 SIGURG 的处理程序之后,还可以使用此代码来准备接收 SIGURG 信号。
#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); }