スポンサーリンク

SYSCTL(3) FreeBSD ライブラリ関数マニュアル SYSCTL(3)

名称

sysctl, sysctlbyname, sysctlnametomib − システム情報を取得または設定

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <sys/types.h>
#include <sys/sysctl.h>

int

sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp, size_t newlen);

int

sysctlbyname(const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen);

int

sysctlnametomib(const char *name, int *mibp, size_t *sizep);

解説

sysctl() 関数はシステム情報を取り出し、該当する特権のあるプロセスがシステ ム情報を設定できるようにします。 sysctl() で利用できる情報は、整数、スト リング、およびテーブルで構成されます。情報は、 sysctl(8) ユーティリティを 使用してコマンドインタフェースから取り出しおよび設定できます。

以降で明確に記載した場合を除いて、 sysctl() は、要求されたデータの一貫し たスナップショットを返します。一貫性を保つために、メモリへの宛先バッファ がロックされるので、データはブロックなしにコピーできます。 sysctl() の呼 び出しはデッドロックを回避するためにシリアル化されています。

状態は ‘‘管理情報ベース’’ (Management Information Base、MIB) スタイルの名 前を使用して記述され、 name にリストされます。 name は長さが namelen の整 数の配列です。

sysctlbyname() 関数は、名前の ASCII 表現を受け入れ、整数の名前ベクトルを 内部的に検索します。それ以外は、標準の sysctl() 関数と同じように機能しま す。

情報は oldp で指定したバッファにコピーされます。バッファのサイズは、呼び 出しの前に oldlenp で指定した位置で与えられます。この位置は、呼び出しが正 常に完了した後およびエラーコード ENOMEM で返った後にコピーされるデータの 量を与えます。利用できるデータの量が指定のバッファサイズより大きい場合、 呼び出しは、指定バッファにちょうど入る量のデータだけを与え、エラーコード ENOMEM で返ります。古い値が不要な場合は、 oldpoldlenp を NULL に設定 してください。

利用できるデータのサイズを決定するには、 oldp に NULL パラメータを指定し て sysctl() を呼び出します。利用できるデータのサイズが、 oldlenp の指す位 置に返されます。操作によっては空間の量が頻繁に変化することがあります。そ のような操作の場合、システムは量を切り上げようとします。返されたサイズ が、その後まもなくデータを返す呼び出しに十分であるようにするためです。

新しい値を設定するため、 newp は、長さが newlen のバッファを指すように設 定されます。このバッファから、要求された値が取得されます。新しい値が設定 されないと、 newp は NULL に設定され、 newlen は 0 に設定されます。

sysctlnametomib() 関数は、ASCII 表現の名前を受け付け、整数の名前ベクトル を検索し、 mibp で指される mib 配列中に、数値表現を格納して返します。 mib 配列中の要素数は、呼び出し前に sizep で指定された場所が与えます。呼び出し が成功した後には、この場所には、コピーされた要素数が与えられます。結果の mibsize は、後で sysctl() 呼び出しに使用して、要求した ASCII 名に関連 付けられているデータを取得可能です。同じ名前の変数を繰り返し要求するアプ リケーションが使用することを、このインタフェースは意図しています ( sysctl() 関数は、 sysctlbyname() 関数で実現される要求と同じことを、約 1/3 の時間で実行します)。 sysctlbyname() 関数は、 mib の前置詞を取得してこれ に最後の構成要素を付加するためにも有用です。例えば、PID が 100 未満のプロ セスのプロセス情報を取得するには、次のようにします:

      int i, mib[4];
      size_t len;
      struct kinfo_proc kp;

     /* Fill out the first three components of the mib */
      len = 4;
      sysctlnametomib("kern.proc.pid", mib, &len);

     /* Fetch and print entries for pid’s < 100 */
      for (i = 0; i < 100; i++) {

mib[3] = i;

len = sizeof(kp);

if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1)

perror("sysctl");

else if (len > 0)

printkproc(&kp);

}

1 番上のレベルの名前は ⟨sys/sysctl.h⟩ に CTL_ 接頭語付きで定義されます。 次のとおりです。次のレベルおよびそれ以下のレベルは、ここにリストするイン クルードファイル内にあり、以降の個別のセクションで説明します。

名前 次のレベル名 解説
CTL_DEBUG sys/sysctl.h デバッグ
CTL_VFS sys/mount.h ファイルシステム
CTL_HW sys/sysctl.h 一般的な CPU, I/O
CTL_KERN sys/sysctl.h カーネルの最高限界
CTL_MACHDEP sys/sysctl.h マシン依存
CTL_NET sys/socket.h ネットワーク
CTL_USER sys/sysctl.h ユーザレベル
CTL_VM vm/vm_param.h 仮想メモリ

たとえば、システムで許容されるプロセスの最大数を取り出す方法は次のとおり です。

int mib[2], maxproc;
size_t len;

mib[0] = CTL_KERN;
mib[1] = KERN_MAXPROC;
len = sizeof(maxproc);
sysctl(mib, 2, &maxproc, &len, NULL, 0);

システムユーティリティの標準検索パスを取り出す方法は次のとおりです。

int mib[2];
size_t len;
char *p;

mib[0] = CTL_USER;
mib[1] = USER_CS_PATH;
sysctl(mib, 2, NULL, &len, NULL, 0);
p = malloc(len);
sysctl(mib, 2, p, &len, NULL, 0);

CTL_DEBUG

デバッグ変数はシステムごとにさまざまです。デバッグ変数を追加または削除す るとき、それを認識するように sysctl() をコンパイルし直す必要はありませ ん。実行のたびに、 sysctl() が、カーネルからデバッグ変数のリストを取得 し、その現在値を表示するからです。システムは 20 個の (struct ctldebug) 変 数を定義します。これらは debug0 から debug19 という名前になります。これら は別個の変数として宣言されるので、対応変数の位置で個別に初期化できます。 ローダーは、変数が複数の場所で初期化されたときはエラーを出して、同じ変数 が複数に使用されるのを回避します。たとえば、変数 dospecialcheck をデバッ グ変数としてエクスポートする場合には、次の宣言が使用できます。

int dospecialcheck = 1;
struct ctldebug debug5 = { "dospecialcheck", &dospecialcheck };

CTL_VFS

明瞭な第 2 レベルの名称 VFS_GENERIC は、すべてのファイルシステムに関する 一般情報を取得するのに使用します。これの第 3 レベルの識別子の 1 つは VFS_MAXTYPENUM で、最も大きいファイルシステムタイプの番号を与えます。別の 第 3 レベルの識別子は VFS_CONF で、第 4 レベルの識別子として与えられた ファイルシステムタイプに関する構成を返します ( 使用法の例は getvfsbyname(3) を参照 ) 。残りの第 2 レベルの識別子は、 statfs(2) 呼び出 しまたは VFS_CONF が返すファイルシステムタイプ番号です。各ファイルシステ ムについて利用できる第 3 レベルの識別子は、そのファイルシステムのマウント 引数構造を定義するヘッダファイルで指定されます。

CTL_HW

CTL_HW レベルに関して利用できるストリングと整数については以下で詳しく説明 します。変更可能性の列は、適切な特権のあるプロセスが値を変更できるかどう かを示します。

2 レベル名 タイプ 変更可能
HW_MACHINE ストリング いいえ
HW_MODEL ストリング いいえ
HW_NCPU 整数 いいえ
HW_BYTEORDER 整数 いいえ
HW_PHYSMEM 整数 いいえ
HW_USERMEM 整数 いいえ
HW_PAGESIZE 整数 いいえ
HW_FLOATINGPOINT 整数 いいえ
HW_MACHINE_ARCH ストリング いいえ

       HW_MACHINE

マシンクラス

HW_MODEL
マシンモデル

HW_NCPU
CPU の数

HW_BYTEORDER
バイト順 (4,321、または 1,234)

HW_PHYSMEM
物理メモリのバイト

HW_USERMEM
カーネルでないメモリのバイト

HW_PAGESIZE
ソフトウェアのページサイズ

HW_FLOATINGPOINT
浮動小数点サポートがハードウェアにある場合はゼロでない

HW_MACHINE_ARCH
マシンはアーキテクチャタイプに依存

CTL_KERN
CTL_KERN レベルに関して利用できるストリングと整数の情報について以下に詳し く説明します。変更可能性の列は、該当する特権のあるプロセスが値を変更する かどうかを示します。現時点で利用できるデータのタイプは、プロセス情報、シ ステム vnode、開いたファイルのエントリ、ルーティングテーブルのエントリ、 仮想メモリ統計、負荷平均履歴、およびクロックレート情報です。

2 レベル名 タイプ 変更可能

KERN_ARGMAX 整数 いいえ

KERN_BOOTFILE ストリング はい

KERN_BOOTTIME struct timeval いいえ

KERN_CLOCKRATE struct clockinfo いいえ

KERN_FILE struct file いいえ

KERN_HOSTID 整数 はい

KERN_HOSTNAME ストリング はい

KERN_JOB_CONTROL 整数 いいえ

KERN_MAXFILES 整数 はい

KERN_MAXFILESPERPROC 整数 はい

KERN_MAXPROC 整数 いいえ

KERN_MAXPROCPERUID 整数 はい

KERN_MAXVNODES 整数 はい

KERN_NGROUPS 整数 いいえ

KERN_NISDOMAINNAME ストリング はい

KERN_OSRELDATE 整数 いいえ

KERN_OSRELEASE ストリング いいえ

KERN_OSREV 整数 いいえ

KERN_OSTYPE ストリング いいえ

KERN_POSIX1 整数 いいえ

KERN_PROC struct proc いいえ

KERN_PROF node 適用不可

KERN_QUANTUM 整数 はい

KERN_SAVED_IDS 整数 いいえ

KERN_SECURELVL 整数 累乗のみ

KERN_UPDATEINTERVAL 整数 いいえ

KERN_VERSION ストリング いいえ

KERN_VNODE struct vnode いいえ

       KERN_ARGMAX

execve(2) への引数の最大バイト数

KERN_BOOTFILE
カーネルがロードされた元のファイルの完全なパス名

KERN_BOOTTIME
struct timeval
構造が返されます。この構造には、システムが起動され た時刻が入れられます。

KERN_CLOCKRATE
struct clockinfo
構造が返されます。この構造には、クロック、統計ク ロック、およびプロファイル化クロック頻度、マイクロ秒 /hz チック、 およびねじれレートが入れられます。

KERN_FILE
ファイルテーブル全体を返します。返されたデータは、 1 つの struct fileheadstruct file の配列が続いたものになります。ファイルの サイズは、システム内のそのようなオブジェクトの現在の数で決まりま す。

KERN_HOSTID
ホスト ID を取得または設定します。

KERN_HOSTNAME
ホスト名を取得または設定します。

KERN_JOB_CONTROL
このシステムで情報制御が利用できる場合は 1 を返します。そうでない 場合は 0 を返します。

KERN_MAXFILES
システムで開けるファイルの最大数

KERN_MAXFILESPERPROC
1 つのプロセスについて開けるファイルの最大数。この制限が適用され るのは、開くという要求があった時点で、ゼロでない有効な uid のある プロセスだけです。制限または有効な uid が変更されても、既に開かれ ているファイルは影響を受けません。

KERN_MAXPROC
システム内で許される同時プロセスの最大数

KERN_MAXPROCPERUID
1 つの有効な uid についてシステムが許容する同時プロセスの最大数。 この限界が適用されるのは、フォーク要求の時点で、ゼロでない有効な uid のあるプロセスだけです。限界が変更されても、既に開始されてい るプロセスは影響を受けません。

KERN_MAXVNODES
システムで利用できる vnode の最大数

KERN_NGROUPS
補充グループの最大数

KERN_NISDOMAINNAME
現在の YP/NIS ドメインの名前

KERN_OSRELDATE
システムのリリース日付。形式は YYYYMM (1996 年 1 月は 199601 と コード化されます )。

KERN_OSRELEASE
システムリリースストリング

KERN_OSREV
システム改訂ストリング

KERN_OSTYPE
システムタイプストリング

KERN_POSIX1
システムが準拠しようとしている IEEE Std 1003.1 (‘‘POSIX.1’’) の バージョン

KERN_PROC
プロセステーブル全体またはそのサブセットを返します。 struct kinfo_proc 構造の配列が返され、配列のサイズはシステム内のそのよう なオブジェクトの現在の数で決まります。第 3 レベルと第 4 レベルは 次のとおりです。

第 3 レベル名 第 4 レベル名

KERN_PROC_ALL なし

KERN_PROC_PID プロセス ID

KERN_PROC_PGRP プロセスグループ

KERN_PROC_TTY tty デバイス

KERN_PROC_UID ユーザ ID

KERN_PROC_RUID リアルユーザ ID

       KERN_PROF

カーネルに関するプロファイル化情報を返します。カーネルをプロファ イル化用にコンパイルしないと、 KERN_PROF 値を取り出そうとしても、 ENOENT で処理は失敗します。ストリング用の第 3 レベル名および整数 プロファイル化情報について以下に詳しく説明します。 ( 変更可能性の 列は、該当する特権のあるプロセスが値を変更できるかどうかを示しま す。

3 レベル名 タイプ 変更可能

GPROF_STATE 整数 はい

GPROF_COUNT u_short[] はい

GPROF_FROMS u_short[] はい

GPROF_TOS struct tostruct はい

GPROF_GMONPARAM struct gmonparam いいえ

変数は次のとおりです。

               GPROF_STATE

GMON_PROF_ON または GMON_PROF_OFF を返して、プロファイル 化が進行中であるか、または停止しているかを示します。

GPROF_COUNT
統計プログラムカウンタカウントの配列

GPROF_FROMS
呼び出し点のプログラムカウントでインデックス処理された配 列

GPROF_TOS
呼び出しの宛先とそのカウントを記述する struct tostruct の 配列

GPROF_GMONPARAM
上記の配列のサイズを指定する構造

KERN_QUANTUM
他プロセスが実行待ち行列にいる場合においてあるプロセスが取り上げ られずに実行し続けられる最大期間を、ミリ秒単位で示します。

KERN_SAVED_IDS
保存された set-group および保存された set-user ID が利用できる場 合は 1 を返します。

KERN_SECURELVL
システムのセキュリティレベル。このレベルは、該当する特権のあるプ ロセスによって上げることができます。下げることはできません。

KERN_VERSION
システムバージョンストリング

KERN_VNODE
vnode テーブル全体を返します。 vnode テーブルは必ずしもシステムの 一貫したスナップショットではないことに注意してください。返される データは配列で構成され、配列のサイズは、システム内のそのようなオ ブジェクトの現在の数で決まります。配列の各要素に含まれるのは、 vnode のカーネルアドレス struct vnode * に vnode 自体 struct vnode が続いたものです。

CTL_MACHDEP
定義された変数の集合はアーキテクチャに依存します。次の変数が i386 アーキ テクチャ用に定義されています。

2 レベル名 タイプ 変更可能

CPU_CONSDEV dev_t いいえ

CPU_ADJKERNTZ 整数 はい

CPU_DISRTCSET 整数 はい

CPU_BOOTINFO struct bootinfo いいえ

CPU_WALLCLOCK 整数 はい

CTL_NET

CTL_NET レベルに利用できるストリングと整数については以下に詳しく説明しま す。変更可能性の列は、該当する特権のあるプロセスが値を変更できるかどうか を示します。

2 レベル名 タイプ 変更可能
PF_ROUTE ルーティングメッセージ いいえ
PF_INET IPv4 値 はい
PF_INET6 IPv6 値 はい

       PF_ROUTE

ルーティングテーブル全体またはそのサブセットを返します。データ は、ルーティングメッセージのシーケンスとして返されます ( ヘッダ ファイル、形式、および意味については route(4) を参照 )。各メッ セージの長さはメッセージヘッダに組み込まれています。

第 3 レベル名はプロトコル番号で、現時点では必ず 0 です。第 4 レベ ル名はアドレスファミリで、これを 0 に設定するとすべてのアドレス ファミリを選択できます。第 5 レベル名と第 6 レベル名は次のとおり です。

5 レベル名 第 6 レベル

NET_RT_FLAGS rtflags

NET_RT_DUMP なし

NET_RT_IFLIST なし

       PF_INET

IPv4 (インターネットプロトコルバージョン 4) に関する各種のグロー バルな情報を取得または設定します。第 3 レベル名はプロトコルです。 第 4 レベル名は変数名です。現時点で定義されているプロトコルと名前 は次のとおりです。

プロトコル 変数 タイプ 変更可能
icmp bmcastecho 整数 はい
icmp maskrepl 整数 はい
ip forwarding 整数 はい
ip redirect 整数 はい
ip ttl 整数 はい
udp checksum 整数 はい

変数は次のとおりです。

               icmp.bmcastecho

ブロードキャストまたはマルチキャストのアドレスへの ICMP エコー要求が応答される必要がある場合は 1 を返します。

icmp.maskrepl
ICMP ネットワークマスク要求が応答される必要がある場合は 1 を返します。

ip.forwarding
IP 転送がホストについて有効なときは 1 を返します。つま り、ホストがルータとして機能しているときです。

ip.redirect
ICMP 再転送がホストによって送信できるときは 1 を返しま す。このオプションは、ホストが IP パケットをルーティング していない場合は無視されます。また、このオプションは通 常、すべてのシステムで有効にしておく必要があります。

ip.ttl
システムがソースになっている IP パケットの最大寿命 ( ホッ プ数 ) 値。この値は通常のトランスポートプロトコルに適用さ れます。 ICMP にではありません。

udp.checksum
UDP チェックサムが計算およびチェックされているときは 1 を 返します。 UDP チェックサムを無効にすることは、強く非推奨 です。

変数 net.inet.*.ipsec については ipsec(4) を参照してくだ さい。

PF_INET6
IPv6 (インターネットプロトコルバージョン 6) に関する各種のグロー バルな情報を取得または設定します。第 3 レベル名はプロトコルです。 第 4 レベル名は変数名です。

変数 net.inet6.* については inet6(4) を参照してください。変数 net.inet6.*.ipsec6 については ipsec(4) を参照してください。

CTL_USER
CTL_USER レベルに利用できるストリングと整数について以下に詳しく説明しま す。変更可能性の列は、該当する特権のあるプロセスが値を変更できるかどうか を示します。

2 レベル名 タイプ 変更可能

USER_BC_BASE_MAX 整数 いいえ

USER_BC_DIM_MAX 整数 いいえ

USER_BC_SCALE_MAX 整数 いいえ

USER_BC_STRING_MAX 整数 いいえ

USER_COLL_WEIGHTS_MAX 整数 いいえ

USER_CS_PATH ストリング いいえ

USER_EXPR_NEST_MAX 整数 いいえ

USER_LINE_MAX 整数 いいえ

USER_POSIX2_CHAR_TERM 整数 いいえ

USER_POSIX2_C_BIND 整数 いいえ

USER_POSIX2_C_DEV 整数 いいえ

USER_POSIX2_FORT_DEV 整数 いいえ

USER_POSIX2_FORT_RUN 整数 いいえ

USER_POSIX2_LOCALEDEF 整数 いいえ

USER_POSIX2_SW_DEV 整数 いいえ

USER_POSIX2_UPE 整数 いいえ

USER_POSIX2_VERSION 整数 いいえ

USER_RE_DUP_MAX 整数 いいえ

USER_STREAM_MAX 整数 いいえ

USER_TZNAME_MAX 整数 いいえ

       USER_BC_BASE_MAX

bc(1) ユーティリティ内の最大 ibase/obase 値

USER_BC_DIM_MAX
bc(1) ユーティリティ内の最大配列サイズ

USER_BC_SCALE_MAX
bc(1) ユーティリティ内の最大スケール値

USER_BC_STRING_MAX
bc(1) ユーティリティ内の最大ストリング長

USER_COLL_WEIGHTS_MAX
ロケール定義ファイル内の LC_COLLATE 順序キーワードのエントリに割り当て できる重みの最大数

USER_CS_PATH
すべての標準ユーティリティを検出する環境変数 PATH の値を返します。

USER_EXPR_NEST_MAX
expr(1) ユーティリティによって、丸括弧内にネストできる式の最大数

USER_LINE_MAX
テキスト処理ユーティリティ入力行の最大長 ( バイト単位 )

USER_POSIX2_CHAR_TERM
IEEE Std 1003.2 (‘‘POSIX.2’’) に記述されたすべての操作ができる少なくと も 1 つの端末タイプをシステムがサポートする場合は 1 を返します。そうで ない場合は 0 を返します。

USER_POSIX2_C_BIND
システムの C 言語開発機能が、 C 言語バインディングオプションをサポート する場合は 1 を返します。そうでない場合は 0 を返します。

USER_POSIX2_C_DEV
システムが C 言語開発ユーティリティオプションをサポートする場合は 1 を 返します。そうでない場合は 0 を返します。

USER_POSIX2_FORT_DEV
システムが FORTRAN 開発ユーティリティオプションをサポートする場合は 1 を返します。そうでない場合は 0 を返します。

USER_POSIX2_FORT_RUN
システムが FORTRAN ランタイムユーティリティオプションをサポートする場合 は 1 を返します。そうでない場合は 0 を返します。

USER_POSIX2_LOCALEDEF
システムがロケールの作成をサポートする場合は 1 を返します。そうでない場 合は 0 を返します。

USER_POSIX2_SW_DEV
システムがソフトウェア開発ユーティリティオプションをサポートする場合は 1 を返します。そうでない場合は 0 を返します。

USER_POSIX2_UPE
システムがユーザポータビリティ・ユーティリティオプションをサポートする 場合は 1 を返します。そうでない場合は 0 を返します。

USER_POSIX2_VERSION
システムが準拠しようとしている IEEE Std 1003.2 (‘‘POSIX.2’’) のバージョ ン

USER_RE_DUP_MAX
間隔表記を使用しているときに、許容される正規表現の反復発生の最大数

USER_STREAM_MAX
プロセスが同時に開いておけるストリームの最大数の最小

USER_TZNAME_MAX
時間帯の名前についてサポートされるタイプの最大数の最小

CTL_VM
CTL_VM レベルで利用できるストリングと整数について以下で詳しく説明します。 変更可能性の列は、該当する特権のあるプロセスが値を変更できるかどうかを示 します。

2 レベル名 タイプ 変更可能

VM_LOADAVG struct loadavg いいえ

VM_METER struct vmtotal いいえ

VM_PAGEOUT_ALGORITHM 整数 はい

VM_SWAPPING_ENABLED 整数 おそらく

VM_V_CACHE_MAX 整数 はい

VM_V_CACHE_MIN 整数 はい

VM_V_FREE_MIN 整数 はい

VM_V_FREE_RESERVED 整数 はい

VM_V_FREE_TARGET 整数 はい

VM_V_INACTIVE_TARGET 整数 はい

VM_V_PAGEOUT_FREE_MIN 整数 はい

       VM_LOADAVG

負荷平均履歴を返します。返されたデータは struct loadavg で構成さ れます。

VM_METER
システム全体に渡る仮想メモリ統計を返します。返されたデータは struct vmtotal で構成されます。

VM_PAGEOUT_ALGORITHM
統計ベースの管理アルゴリズムが使用される場合は 0 です。近 LRU ( near-LRU ) アルゴリズムが使用される場合は 1 です。

VM_SWAPPING_ENABLED
プロセススワップが有効な場合は 1 です。無効な場合は 0 です。ス ワップを無効にしてカーネルが構築された場合、この変数は永続的に 0 に設定されます。

VM_V_CACHE_MAX
キャッシュ待ち行列の最大希望サイズ

VM_V_CACHE_MIN
キャッシュ待ち行列の最小希望サイズ。キャッシュ待ち行列のサイズが この値よりはるかに低いと、ページアウトデーモンが起動されます。

VM_V_FREE_MIN
メモリを待っているプロセスが起動する前に、利用できるようになる必 要のあるメモリの最小量 ( キャッシュメモリ+空きメモリ )。

VM_V_FREE_RESERVED
空きページとキャッシュページがこの値より低いと、プロセスはページ アウトデーモンを起動し、メモリを待機します。

VM_V_FREE_TARGET
ページアウトデーモンが維持しようとする空きメモリの合計量 ( キャッ シュメモリを含む )。

VM_V_INACTIVE_TARGET
ページアウトデーモンが、実行されるときに、到達する必要のあるアク ティブでないページの希望数。アクティブでないページは、必要なとき に、プロセスアドレス内に素早く挿入できます。

VM_V_PAGEOUT_FREE_MIN
空きメモリとキャッシュメモリの量がこの値より低い場合、ページアウ トデーモンはデッドロックを避けるために "メモリ維持モード" に入り ます。

戻り値

成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。

エラー

次のエラーが報告される可能性があります。

       [EFAULT]

バッファ nameoldpnewp、または長さポインタ oldlenp に無効なアドレスが含まれています。

[EINVAL]
name
配列が 2 未満であるか、または CTL_MAXNAME より大 きくなっています。

[EINVAL]
NULL でない newp が指定され、 newlen 内の指定の長さが 大きすぎるかまたは小さすぎます。

[ENOMEM]
oldlenpis
が指す長さが短すぎて、要求された値を保持でき ません。

[ENOTDIR]
name
配列が、端の名前ではなく、中間の名前を指定してい ます。

[EISDIR]
name
配列が端の名前を指定していますが、実際の名前は端 ではありません。

[ENOENT]
name
配列が未知の値を指定しています。

[EPERM]
読み取り専用値を設定しようとしました。

[EPERM]
該当する特権のないプロセスが値を設定しようとしました。

ファイル

sys/sysctl.h

1 番上のレベルの識別子の定義、 2 番めのレベルのカー ネルおよびハードウェア識別子、およびユーザレベル識 別子
sys/socket.h
第 2 レベルのネットワーク識別子の定義
sys/gmon.h
第 3 レベルのプロファイル化識別子についての定義
vm/vm_param.h
第 2 レベルの仮想メモリ識別子についての定義
netinet/in.h
第 3 レベルの IPv4/IPv6 識別子と、第 4 レベルの IPv4/IPv6 識別子についての定義
netinet/icmp_var.h
第 4 レベルの ICMP 識別子についての定義
netinet/icmp6.h
4 レベルの ICMPv6 識別子についての定義
netinet/udp_var.h
第 4 レベルの UDP 識別子についての定義

関連項目

sysconf(3), sysctl(8)

歴史

sysctl() 関数は 4.4BSD で最初に取り入れられました。

FreeBSD 10.0 January 23, 2001 FreeBSD 10.0

スポンサーリンク