ioctl ソケット制御操作

目的

ネットワーク関連の制御操作を実行します。

構文

#include <sys/ioctl.h>

int ioctl (fd,  cmd, .../* arg */) 
int  fd;
int  cmd; 
int ...  /* arg */

説明

ソケット ioctl コマンドは、さまざまなネットワーク関連の制御を行います。 fd 引数はソケット記述子です。 非ソケット記述子の場合、この呼び出しによって実行される関数は指定されません。

cmd 引数とオプションの 3 番目の引数 (可変タイプ) は、ユーザーが指定した適切な制御操作を実行するために、ソケット ioctl 関数に渡され、この関数によって解釈されます。

ソケット ioctl 制御操作は、以下の制御操作カテゴリーに属することができます。

パラメーター

項目 説明
fd ソケットまたは受け入れ呼び出しを使用して作成されたソケットを参照するオープン・ファイル記述子。
cmd 実行する制御機能を選択します。
.../ * arg */ 要求された機能に必要な情報を表します。 arg のタイプは、特定の制御要求によって異なりますが、整数またはソケット固有のデータ構造体へのポインターのいずれかです。

ソケット制御操作

以下の ioctl コマンドは、ソケット上で作動します。
ioctl コマンド 説明
SIOCATMARK 読み取りポインターが DataStream内の論理マークを指しているかどうかを判別します。 論理マークは、アウト・オブ・バンド・データが送信されるポイントを示します。
ioctl(fd, SIOCATMARK,&atmark);
int atmark;
atmark が戻り時に 1 に設定されている場合、読み取りポインターはマークを指し、次の読み取りではマークの後にデータが戻されます。 atmark0 に設定されている場合 ( DataStreamにアウト・オブ・バンド・データが存在することを前提とします)、次の読み取りでは、アウト・オブ・バンド・マークの前に送信されるデータが戻されます。
注: アウト・オブ・バンド・データは、論理的に独立したデータ・チャネルであり、通常のデータとは無関係にユーザーに送信されます。さらに、即時アテンションが必要なため、シグナルも送信されます。 Ctrl-C 文字は一例です。

シオシスペGRP

SIOCGPGRP (GPGRP)

SIOCSPGRP は、ソケットのプロセス・グループ情報を設定します。 SIOCGPGRP は、ソケットに関連付けられたプロセス・グループ ID を取得します。
ioctl (fd, cmd, (int)&pgrp);
int  pgrp;
cmd
SIOCSPGRP または SIOCGPGRP に設定します。
pgrp
ソケットのプロセス・グループ ID を指定します。

ルーティング・テーブル制御操作

以下の ioctl コマンドは、カーネル・ルーティング・テーブルで動作します。
ioctl コマンド 説明

SIOCADDRT

SIOCDELRT

SIOCADDRT は、経路指定テーブルに経路項目を追加します。 SIOCDELRT は、経路指定テーブルから経路項目を削除します。
ioctl(fd, cmd, (caddr_t)&route);
struct ortentry route;
cmd
SIOCADDRT または SIOCDELRT に設定します。
経路エントリー情報は、 ortentry 構造で渡されます。
SIOUPDROUTE (IOUPDROUTE) ifreq 構造体に渡された情報を使用して、ルーティング・テーブルを更新します。
ioctl (fd, SIOUPDROUTE, (caddr_t)&ifr);
struct ifreq  ifr;

ARP テーブル制御操作

以下の ioctl コマンドは、カーネル ARP テーブルで動作します。 net/if_arp.h ヘッダー・ファイルを組み込む必要があります。
ioctl コマンド 説明

SIOCSARP (R)

シオCDARP

シオCGARP

SIOCSARP は、ARP テーブル内の ARP エントリーを追加または変更します。 SIOCDARP は、ARP テーブルから ARP エントリーを削除します。 SIOCGARP は ARP テーブルから ARP エントリーを取得します。
ioctl(fd, cmd, (caddr_t)&ar);
struct arpreq ar;
cmd
SIOCSARP、SIOCDARP、または SIOCGARP に設定します。

ARP エントリー情報は、 arpreq 構造体に渡されます。 ar.if Type = IFT_IB で、コマンドが SIOCDARP の場合、 InfiniBand (IB) ARP 項目は削除されます。

グローバル・ネットワーク・パラメーター制御操作

以下の ioctl コマンドは、グローバル・ネットワーク・パラメーターとして機能します。
ioctl コマンド 説明

SIOCSNETOPT (S)

SIOCGNETOPT (IOCGNETOPT)

SIOCDNETOPT (IOCDNETOPT)

SIOCGNETOPT1

SIOCSNETOPT は、ネットワーク・オプションの値を設定します。 SIOCGNETOPT は、ネットワーク・オプションの値を取得します。 SIOCDNETOPT は、ネットワーク・オプションのデフォルト値を設定します。
ioctl(fd, cmd, (caddr_t)&oreq);
struct optreq oreq;
cmd
SIOCSNETOPT、SIOCGNETOPT、または SIOCDNETOPT に設定します。
ネットワーク・オプション値は、 optreq 構造体に保管されます。
SIOCGNETOPT1 は、ネットワーク・オプションの現行値、デフォルト値、および範囲を取得します。
ioctl(fd, SIOCGNETOPT1, (caddr_t)&oreq);
struct optreq1 oreq;
ネットワーク・オプション情報は、戻り時に optreq1 構造体に保管されます。 optreq および optreq1 構造体は、 net/netopt.hに定義されています。

SIOCGNMTUS (ミサイル)

SIOCGETMTUS (ミサイル)

SIOCADDMTU

SIOCDELMTU (S)

SIOCGNMTUS は、共通 MTU のリストに維持されている MSU の数を取得します。 SIOCADDMTU は、共通 MTU のリストに MTU を追加します。 SIOCDELMTU は、共通 MTU のリストから MTU を削除します。
ioctl(fd, cmd, (caddr_t)&nmtus);
int nmtus;
cmd
SIOCGNMTUS、SIOCADDMTU、または SIOCDELMTU に設定します。
SIOCGETMTUS は、共通 MSU のリストに維持されている MSU を取得します。
ioctl(fd, SIOCGETMTUS, (caddr_t)&gm);
struct get_mtus gm;
get_mtus 構造体は、「 netinet/in.h」で定義されています。

インターフェース制御操作

以下の ioctl コマンドはインターフェース上で動作します。 net/if.h ヘッダー・ファイルを組み込む必要があります。
ioctl コマンド 説明

SIOCSIFADDR

SIOCDIFADDR (S)

SIOCSIFADDR はインターフェース・アドレスを設定します。 SIOCDIFADDR は、インターフェース・アドレスを削除します。 インターフェース・アドレスは、 ifr.ifr_addr フィールドで指定されます。 SIOCGIFADDR はインターフェース・アドレスを取得します。 アドレスは、 ifr.ifr_addr フィールドに戻されます。
ioctl(fd, cmd, (caddr_t)&ifr, sizeof(struct ifreq));
struct ifreq ifr;
cmd
SIOCSIFADDR または SIOCDIFADDR に設定されます。

SIOCAIFADDR (アドレス)

SIOCAIFADDR はインターフェース・アドレスを追加します。 インターフェース名は、 ifr.ifra_name フィールドで指定されます。 別名 IP アドレスは、 theifr.ifra_addr フィールドで指定されます。 別名 IP ブロードキャスト・アドレスは ifr.ifra_broadaddr フィールドに指定することができ、別名 IP ネットワーク・マスクは ifr.ifra_maskに指定することができます。
ioctl(fd, cmd, (caddr_t)&ifr, sizeof(struct ifaliasreq));
struct ifaliasreq ifr;
cmd
SIOCAIFADDR に設定
SIOCGIアドレス インターフェースに関連付けられたアドレスのリストを取得します。
ioctl (fd, SIOCGIFADDRS, (caddr_t)ifaddrsp);
struct ifreqaddrs  *ifaddrsp;
インターフェース名は、 ifaddrsp-> ifr_name フィールドで渡されます。 インターフェースに関連付けられたアドレスは、戻り時に ifaddrsp->ifrasu 配列に保管されます。
注: ifreqaddrs 構造体には、1 つの sockaddr_in/sockaddr_in6 構造体 (1 つの sockaddr_in/sockaddr_in6 エレメントの配列) のみを保管するためのスペースが含まれています。 インターフェースに関連付けられた n 個のアドレスを取得するには、ioctl コマンドの呼び出し元が {sizeof (struct ifreqaddrs) + (n * sizeof (struct sockaddr_in)} バイトのスペースを割り振る必要があります。

SIOCSIFDSTADDR

SIOCGIFDSTADDR

SIOCSIFDSTADDR は、 ifr.ifr_dstaddr フィールドに指定されたインターフェースの Point-to-Point アドレスを設定します。 SIOCGIFDSTADDR は、インターフェースに関連付けられた Point-to-Point アドレスを取得します。 このアドレスは、戻り時に ifr.ifr_dstaddr フィールドに保管されます。
ioctl(fd, cmd, (caddr_t)&ifr, sizeof(struct ifreq));
struct ifreq ifr;
cmd
SIOCSIFDSTADDR または SIOCGIFDSTADDR に設定されます。

SIOCSIFNETMASK

SIOCGIFNETMASK

SIOCSIFNETMASK は、 ifr.ifr_addr フィールドに指定されたインターフェース・ネットマスクを設定します。 SIOCGIFNETMASK はインターフェース・ネットマスクを取得します。
ioctl(fd, cmd, (caddr_t)&ifr, sizeof(struct ifreq));
struct ifreq ifr;
cmd
SIOCSIFNETMASK または SIOCGIFNETMASK に設定されます。

SIOCSIFBRDADDR

SIOCGIFBRDADDR

SIOCSIFBRDADDR は、 ifr.ifr_broadaddr フィールドに指定されたインターフェース・ブロードキャスト・アドレスを設定します。 SIOCGIFBRDADDR は、インターフェース・ブロードキャスト・アドレスを取得します。 ブロードキャスト・アドレスは、 ifr.ifr_broadaddr フィールドに入れられます。
ioctl(fd, cmd, (caddr_t)&ifr, sizeof(struct ifreq));
struct ifreq ifr;
cmd
SIOCSIFBRDADDR または SIOCGIFBRDADDR に設定します。
SIOCGSIZIFCONF SIOCGIFCONF によって返されるすべてのインターフェースの構成情報を取得するために必要なメモリーのサイズを取得します。
ioctl(fd, cmd, (caddr_t)&ifconfsize);
int ifconfsize;
SIOCGIFCONF システム上で構成されているすべてのインターフェースの構成情報を返します。
ioctl(fd, SIOCGIFCONF, (caddr_t)&ifc);
struct ifconf ifc;
構成情報は、インターフェースごとに 1 つの ifreq 構造体を持つ、 ifc.ifc_req フィールドが指す ifreq 構造体のリストに戻されます。
注: ioctl コマンドの呼び出し側は、システム上に構成されているすべてのインターフェースの ifreq 構造体のリストとして戻される、構成情報を保管するのに十分なスペースを割り振る必要があります。 例えば、 n 個のインターフェースがシステム上に構成されている場合、 ifc.ifc_req は、割り振られたスペースの {n * sizeof (struct ifreq)} バイトを指す必要があります。
注: この目的で SIOCGSIZIFCONF ioctl コマンドを使用することもできます。

SIOCSIFFLAGS

SIOCGIFFLAGS

SIOCSIFFLAGS はインターフェース・フラグを設定します。 SIOCGIFFLAGS はインターフェース・フラグを取得します。
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;
IFF_xxxで示されるインターフェース・フラグについては、「 /usr/include/net/if.h 」を参照してください。
注: IFF_BROADCASTIFF_POINTTOPOINTIFF_SIMPLEXIFF_RUNNINGIFF_OACTIVE、および IFF_MULTICAST フラグは、ioctl を使用して変更することはできません。

SIOCSIFMETRIC

SIOCGIFMETRIC

SIOCSIFMETRIC は、 ifr.ifr_metric フィールドに指定されたインターフェース・メトリックを設定します。 SIOCGIFMETRIC はインターフェース・メトリックを取得します。 インターフェース・メトリックは、戻り時に ifr.ifr_metric フィールドに配置されます。
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;
cmd
SIOCSIFMETRIC または SIOCGIFMETRIC に設定します。

SIOCSIFSUBCHAN (IOCSIFSUBCHAN)

IOCGIFSUBCHAN (SOIOCGIFSUBCHAN)

SIOCSIFSUBCHAN は、 ifr.ifr_flags フィールドに指定されたサブチャネル・アドレスを設定します。 SIOCGIFSUBCHAN は、 ifr.ifr_flags フィールド内のサブチャネル・アドレスを取得します。
ioctl(fd, SIOCSIFSUBCHAN, (caddr_t)&ifr);
struct ifreq ifr;

SIOCSIFOPTIONS (IOCSIFOPTIONS)

SIOCG ファイルオプション

SIOCSIFOPTIONS は、インターフェース・オプションを設定します。 SIOCGIFOPTIONS はインターフェース・オプションを取得します。
ioctl(fd, SIOCSIFOPTIONS, (caddr_t)&ifr);
struct ifreq ifr;
インターフェース・オプションは、 ifreq 構造体の ifr_flags フィールドに保管されます。 IFO_xxxで示されるインターフェース・オプションのリストについては、 /usr/include/net/if.h ファイルを参照してください。
ioctl コマンド 説明

複数の SIOCADDMULTI

複数の SIOCDELMULTI

SIOCADDMULTI は、インターフェースのマルチキャスト・アドレスのリストにアドレスを追加します。 SIOCDELMULTI は、インターフェースのマルチキャスト・アドレスのリストからマルチキャスト・アドレスを削除します。
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;
cmd
SIOCADDMULTI または SIOCDELMULTI に設定します。
マルチキャスト・アドレス情報は、 ifr_addr 構造体で指定されます。
SIOCGETVIFCNT 型 仮想インターフェースのパケット・カウント情報を取得します。 この情報は、 sioc_vif_req 構造体で指定されます。
ioctl (fd, SIOCGETVIFCNT, (caddr_t)&v_req);
struct sioc_vif_req  v_req;
SIOCGETSGCNT (S) 指定されたソース・グループのパケット・カウント情報を取得します。 情報は、戻り時に sioc_sg_req 構造体に保管されます。
ioctl(fd, SIOCGETSGCNT, (caddr_t)&v_req);
struct sioc_sg_req v_req;

SIOCSIFMTU

SIOCGIFMTU

SIOCSIFMTU は、インターフェース最大伝送単位 (MTU) を設定します。 SIOCGIFMTU はインターフェース MTU を取得します。
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;
MTU 値は、 ifr.ifr_mtu フィールドに保管されます。
注: MTU の有効な値の範囲は、インターフェースによって異なり、インターフェース・タイプによって異なります。

シオシIFATTACH

SIOCIFDETACH

SIOCIFATTACH はインターフェースを接続します。 これにより、インターフェースが初期化され、ネットワーク・インターフェース・リストに追加されます。 SIOCIFDETACH は、インターフェース・ブロードキャスト・アドレスを切り離します。 これにより、ネットワーク・インターフェース・リストからインターフェースが削除されます。 インターフェース名は、 ifr.ifr_name フィールドで指定されます。
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;

シオスィフギディリスト

SIOCGIFGIDLIST

SIOCSIFGIDLIST は、 ifrg.ifrg_gidlist フィールドに指定されたグループ ID のリストを gidlist インターフェースに追加または削除します。 インターフェース名は、 ifrg.ifrg_name フィールドで指定されます。 ifrg.ifrg_gidlist フィールドで指定された命令コード ADD_GRP/DEL_GRPは、指定されたグループ ID のリストを gidlist インターフェースで追加または削除する必要があるかどうかを示します。 SIOCGIFGIDLIST は、インターフェースに関連付けられたグループ ID のリストを取得します。 グループ ID は、戻り時に ifrg.ifrg_gidlist フィールドに入れられます。
ioctl(fd, cmd, (caddr_t)&ifrg);
struct ifgidreq ifrg;

SIOCIF_ATM_UBR (R)

SIOCIF_ATM_SNMPARP (S)

SIOCIF_ATM_DUMPARP (S)

SIOCIF_ATM_アイドル

SIOCIF_SVC (SIOCIF_ATM_SVC)

SIOCIF_ATM_DARP (S)

SIOCIF_ATM_GARP

SIOCIF_ATM_SARP (S)

SIOCIF_ATM_UBR は、ATM インターフェースの UBR 率を設定します。 SIOCIF_ATM_SNMPARP は、SNMP ATM ARP エントリーを取得します。 SIOCIF_ATM_DUMPARP は、指定された数の ATM ARP エントリーを取得します。 SIOCIF_ATM_DARP は、ATM ARP エントリーを ARP テーブルから削除します。 SIOCIF_ATM_GARP は、ARP テーブルへの ATM ARP エントリーを取得します。 SIOCIF_ATM_SARP は ATM ARP エントリーを追加します。 ARP 情報は、 atm_arpreq 構造体で指定されます。 SIOCIF_ATM_SVC は、このインターフェースがパーマネント・バーチャル・サーキット (PVC) およびスイッチド・バーチャル・サーキット (SVC) タイプの仮想接続をサポートするかどうかを指定します。 また、 ifatm_svc_arg 構造に設定されているフラグに基づいて、このインターフェースがこの論理 IP サブネットワーク (LIS) の ARP クライアントか ARP サーバーかを指定します。 SIOCIF_ATM_IDLE は、インターフェースのアイドル時間制限を指定します。

SIOCSISNO

SIOCGISNO

SIOCSISNO は、インターフェースに固有のネットワーク・オプションを設定します。 SIOCGISNO は、インターフェースに関連付けられたインターフェース固有のネットワーク・オプションを取得します。
ioctl(fd, cmd, (caddr_t)&ifr);
struct ifreq ifr;
cmd
SIOCSISNO または SIOCGISNO に設定します。
インターフェース固有のネットワーク・オプションは、 ifr.ifr_isno 構造体に保管されます。 ISNO_xxxで示されるインターフェース固有のネットワーク・オプションのリストについては、 /usr/include/net/if.h ファイルを参照してください。
SIOCG・FBAUDRATE ifr_baudrate フィールド内のインターフェースボー・レートの値を取得します。
ioctl(fd, SIOCGIFBAUDRATE, (caddr_t)&ifr);
struct ifreq ifr;
ボー・レートは、 ifr.ifr_baudrate フィールドに保管されます。

SIOCADDIFVIPA (SIOCADDIVIPA)

シオシデLIFVIPA

シオCLISTIFVIPA

SIOCADDIFVIPA は、 ifrv.ifrv_ifname が指すインターフェースの指定リストを、 ifrv.ifrv_nameが指定する仮想インターフェースに関連付けます。 この操作により、これらのインターフェース上のすべての発信パケットのソース・アドレスが仮想インターフェース・アドレスに設定されます。 SIOCDELIFVIPA は、SIOCADDIFVIPA を使用して、 ifrv.ifrv_ifname によって指し示され、 ifrv.ifrv_nameによって指定された仮想インターフェースに関連付けられた、指定されたインターフェースのリストを除去します。 SIOCLISTIFVIPA は、 ifrv.ifrv_nameによって指定された仮想インターフェースに関連付けられているすべてのインターフェースをリストします。
ioctl(fd, SIOCADDIFVIPA, (caddr_t)&ifrv);
struct ifvireq ifrv;
仮想インターフェース情報は、 ifvireq 構造に保管されます。
注: これらのフラグは、仮想インターフェースでのみ機能します。
SIOCSIFADDR6 IPv6 アドレスを設定または追加します。
ioctl(fd, SIOCSIFADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCGIFADDR6 IPv6 アドレスを取得します。
ioctl(fd, SIOCGIFADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCSIFDSTADDR6 IPv6 アドレスの宛先 (Point-to-Point) アドレスを設定します。
ioctl(fd, SIOCSIFDSTADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCGIFDSTADDR6 IPv6 アドレスの宛先 (point-to-point) アドレスを取得します。
ioctl(fd, SIOCGIFDSTADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCSIFNETMASK6 IPv6 アドレスのネットマスクを設定します。
ioctl(fd, SIOCSIFNETMASK6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCGIFNETMASK6 IPv6 アドレスのネットマスクを取得します。
ioctl(fd, SIOCGIFNETMASK6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCDIFADDR6 IPv6 アドレスを削除します。
ioctl(fd, SIOCDIFADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCFIFADDR6 アドレス・リストの先頭に IPv6 アドレスを配置します。
ioctl(fd, SIOCFIFADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCAIFADDR6 IPv6 別名アドレスを追加または変更します。
ioctl(fd, SIOCAIFADDR6, (caddr_t)&ifra);
struct in6_aliasreq ifra;
SIOCADDANY6 IPv6 エニーキャスト・アドレスを追加します。
ioctl(fd, SIOCADDANY6, (caddr_t)&ifra);
struct in6_ifreq ifr;
SIOCDELANY6 IPv6 エニーキャスト・アドレスを削除します。
ioctl(fd, SIOCDELANY6, (caddr_t)&ifra);
struct in6_ifreq ifr;
SIOCSIFZONE6 特定のアドレス・スコープでインターフェースの IPv6 ゾーン ID を設定します。
ioctl(fd, SIOCSIFZONE6, (caddr_t)&ifrz);
struct in6_zonereq ifrz;
SIOCGIFZONE6 インターフェースの IPv6 スコープ・ゾーン ID を取得します。
ioctl(fd, SIOCGIFZONE6, (caddr_t)&ifrz);
struct in6_zonereq ifrz;
SIOCSIFADDRORI6 IPv6 アドレスの構成起点を設定します。
ioctl(fd, SIOCSIFADDRORI6, (caddr_t)&ifro);
struct ifaddrorigin6 ifro;
SIOCAIFADDR6T IPv6 別名のアドレスとタイプを追加または変更します。
ioctl(fd, SIOCAIFADDR6T, (caddr_t)&ifra);
struct in6_aliasreq2 ifra;
SIOCGIFADDR6T IPv6 アドレスのタイプを取得します。
ioctl(fd, SIOCGIFADDR6T, (caddr_t)&ifra);
struct in6_aliasreq2 ifra;
SIOCSIFADDRSTATE6 IPv6 アドレスの状態を変更します。
ioctl(fd, SIOCSIFADDRSTATE6, (caddr_t)&ifra);
struct in6_aliasreq2 ifra;
SIOCGIFADDRSTATE6 IPv6 アドレスの状態を取得します。
ioctl(fd, SIOCGIFADDRSTATE6, (caddr_t)&ifra);
struct in6_aliasreq2 ifra;
SIOCGSRCFILTER6 インターフェースの IPv6 マルチキャスト・グループ・ソース・フィルターを取得します。
ioctl(fd, SIOCGSRCFILTER6, (caddr_t)&ifrgsf);
struct group_source_filter_req ifrgsf;
SIOCACLADDR6 IPv6 クラスター別名アドレスを追加します。
ioctl(fd, SIOCACLADDR6, (caddr_t)&ifra);
struct in6_aliasreq ifra;
SIOCDCLADDR6 IPv6 クラスター・アドレスを削除します。
ioctl(fd, SIOCDCLADDR6, (caddr_t)&ifr);
struct in6_ifreq ifr;
SIOCSIFADDRFLAG6 IPv6 アドレスのアドレス・ソース・フラグを設定します。
ioctl(fd, SIOCSIFADDRFLAG6, (caddr_t)&ifra2);
struct in6_aliasreq2 ifra2;
SIOCGIFADDRFLAG6 IPv6 アドレスのアドレス・ソース・フラグを取得します。
ioctl(fd, SIOCGIFADDRFLAG6, (caddr_t)&ifra2);
struct in6_aliasreq2 ifra2;

戻り値

正常終了すると、ioctl は 0を戻します。 それ以外の場合は、 -1 を返し、エラーを示す errno を設定します。

エラー・コード

以下の一般的な条件下では、ioctl コマンドは失敗します。
項目 説明
EBADF ファイル記述子 fd は、有効なオープン・ソケット・ファイル記述子ではありません。
EINTR ioctl 操作中にシグナルがキャッチされました。
EINVAL 無効なコマンドまたは引数が指定されました。
ioctl コマンド cmd によって指定された基礎となる操作が失敗した場合、ioctl は以下のいずれかのエラー・コードで失敗します。
項目 説明
EACCES 指定された操作に対して拒否された許可。
EADDRNOTAVAIL 指定されたアドレスはインターフェースに使用できません。
EAFNOSUPPORT ソケットでサポートされない操作。
EBUSY リソースが使用中です。
EEXIST エントリーまたはファイルが存在します。
EFAULT 引数がアクセス不能なメモリー領域を参照しています。
EIO 入出力エラー。
ENETUNREACH ゲートウェイに到達できません。
ENOBUFS ルーティング・テーブルがオーバーフローしました。
ENOCONNECT 接続がありません。
ENOMEM 使用可能なメモリーが不足しています。
ENOTCONN 操作は接続されたソケットでのみ定義されますが、ソケットは接続されませんでした。
ENXIO デバイスが存在しません。
ESRCH 該当する処理がない。