.\" .\" Copyright (C) 2002 Chad David . All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice(s), this list of conditions and the following disclaimer as .\" the first lines of this file unmodified other than the possible .\" addition of one or more copyright notices. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice(s), this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY .\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE .\" DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY .\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES .\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR .\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER .\" CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH .\" DAMAGE. .\" .\" %FreeBSD: src/lib/libc/sys/kenv.2,v 1.4 2002/12/19 09:40:25 ru Exp % .\" .\" $FreeBSD$ .Dd April 17, 2002 .Dt KENV 2 .Os .Sh 名称 .Nm kenv .Nd カーネル環境 .Sh ライブラリ .Lb libc .Sh 書式 .In kenv.h .Ft int .Fn kenv "int action" "const char *name" "char *value" "int len" .Sh 解説 .Fn kenv システムコールはカーネル環境変数を操作します。 カーネル環境の中の全てのエントリをダンプする能力と同様に、ユーザランドで よく知られている環境変数を取得、設定、設定解除する動作をサポートしています。 .Pp .Fa action 引数は、以下の中の 1 つを取ることが可能です: .Bl -tag -width ".Dv KENV_UNSET" .It Dv KENV_GET カーネル環境変数に関連付けられた値を返します。 その変数が見つからない場合には、\-1 が返されグローバル変数 .Va errno が .Er ENOENT に設定されます。 .Fa value に利用可能なバイト数のみがコピーされます。 .It Dv KENV_SET 新しいカーネル環境変数を設定または追加します。 このオプションはスーパユーザのみ利用可能です。 .It Dv KENV_UNSET カーネル環境変数 .Fa name を設定解除します。 その変数が見つからなかった場合には、\-1 が返されグローバル変数 .Va errno が .Er EINVAL に設定されます。 このオプションはスーパユーザのみ利用可能です。 .It Dv KENV_DUMP .Fa value を埋め尽くすだけのカーネル環境変数をダンプします。 .Fa value が .Dv NULL の場合には、 .Fn kenv は環境変数全体をコピーするために必要なバイト数を返すでしょう。 .El .Pp .Fa name 引数は作用されるべき環境変数の名前です。 .Dv KENV_DUMP の場合には、無視されます。 .Pp .Fa value 引数は、 .Dv KENV_SET の場合には環境変数 .Fa name に設定するべき値、または .Dv KENV_DUMP および .Dv KENV_GET の場合には .Fn kenv が返すデータをコピーするべき場所を指し示す値、のどちらかを含みます。 .Fa value が .Dv NULL で .Dv KENV_DUMP の場合には、 .Fn kenv は環境変数全体をコピーするために必要なバイト数を返すでしょう。 .Pp .Fa len 引数は .Fa value が指す記憶領域が何バイトかを示します。 .Sh 戻り値 .Dv KENV_SET および .Dv KENV_UNSET で成功した場合には、 .Fn kenv システムコールは 0 を返します。 .Dv KENV_DUMP および .Dv KENV_GET で成功した場合には、 .Fa value にコピーされたバイト数を返します。 エラーが発生した場合には、値 \-1 が返されグローバル変数 .Va errno がそのエラーを示すために設定されます。 .Sh エラー .Fn kenv システムコールは、以下の場合に失敗します: .Bl -tag -width Er .It Bq Er EINVAL .Fa action 引数が有効なオプションではありません。または .Dv KENV_SET のための .Fa value 引数の長さが 1 未満です。 .It Bq Er ENOENT .Dv KENV_SET または .Dv KENV_UNSET のための .Fa name の値が見つけられませんでした。 .It Bq Er EPERM スーパユーザではないユーザがカーネル環境変数を設定または 設定解除しようとしました。 .It Bq Er EFAULT ユーザ引数にコピーまたは値をコピーしようとしたときに、 不正なアドレスに遭遇しました。 .It Bq Er ENAMETOOLONG ユーザによって与えられた変数の名前が .Dv KENV_MNAMELEN より長過ぎました、または変数の値が .Dv KENV_MVALLEN より長過ぎました。 .El .Sh 関連項目 .Xr kenv 1 .Sh 作者 .An -nosplit このマニュアルページは .An Chad David Aq davidc@FreeBSD.org が書きました。 .Pp .Fn kenv システムコールは .An Maxime Henrion Aq mux@FreeBSD.org が書きました。