ネットワークインタフェース

割り込み方式のソケット入出力

SIGIO シグナルは、ソケット (実際には任意のファイル記述子) がデータ転送を終了した時点をプロセスに通知します。SIGIO を使用する手順は次のとおりです。

例 2-15 は、ソケットで要求が保留される場合にその保留要求に関する情報を特定のプロセスが受信する例を示しています。SIGURG のハンドラを追加すると、このコードは SIGURG シグナルを受信する目的でも使用できます。


例 2-15 入出力要求の非同期通知

#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);
}