编程接口指南

信号和进程组 ID

对于 SIGURGSIGIO,每个套接字都具有一个进程号和进程组 ID。这些值初始化为零,但是可以在稍后使用 F_SETOWN fcntl(2) 命令重新定义,如前面示例中所示。fcntl(2) 采用正值的第三个参数可以设置套接字的进程 ID。fcntl(2) 采用负值的第三个参数可以设置套接字的进程组 ID。SIGURGSIGIO 信号的唯一允许接受者是调用进程。 类似的 fcntl(2)(即 F_GETOWN)将返回套接字的进程号。

还可以通过使用 ioctl(2) 将套接字指定给用户的进程组来接收 SIGURGSIGIO

/* oobdata is the out-of-band data handling routine */

sigset(SIGURG, oobdata);

int pid = -getpid();

if (ioctl(client, SIOCSPGRP, (char *) &pid) < 0) {

  perror("ioctl: SIOCSPGRP");

}