SIGIO シグナルは、ソケット (実際には任意のファイル記述子) がデータ転送を終了した時点をプロセスに通知します。SIGIO を使用する手順は次のとおりです。
signal(3C) 呼び出しまたは sigvec(3UCB) 呼び出しを使用して、SIGIO シグナルハンドラを設定する
シグナルの経路をそれ自体のプロセス ID またはプロセスグループ ID に指定するため、fcntl(2) を使用してプロセス ID またはプロセスグループ ID を設定する (ソケットのデフォルトのプロセスグループはグループ 0)
「非同期ソケット入出力」に示すように、ソケットを非同期に変換する
例 2-15 は、ソケットで要求が保留される場合にその保留要求に関する情報を特定のプロセスが受信する例を示しています。SIGURG のハンドラを追加すると、このコードは SIGURG シグナルを受信する目的でも使用できます。
#include <fcntl.h> #include <sys/file.h> ... signal(SIGIO, io_handler); /* SIGIO または SIGURG シグナルを受信するプロセスを s に設定する。*/ if (fcntl(s, F_SETOWN, getpid()) < 0) { perror("fcntl F_SETOWN"); exit(1); }