| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > nnis_subr(3N)HP-UX 11i Version 2: September 2004 |
|
名称nis_subr, nis_leaf_of, nis_name_of, nis_domain_of, nis_getnames, nis_freenames, nis_dir_cmp, nis_clone_object, nis_destroy_object, nis_print_object ― NIS+ サブルーチン 構文cc [ flag... ] file... -lnsl [ library... ] #include <rpcsvc/nis.h> nis_name nis_leaf_of(const nis_name name); nis_name nis_name_of(const nis_name name); nis_name nis_domain_of(const nis_name name); nis_name *nis_getnames(const nis_name name); void nis_freenames(nis_name *namelist); name_pos nis_dir_cmp(const nis_name n1, const nis_name n2); nis_object *nis_clone_object(const nis_object *src, nis_object *dest); void nis_destroy_object(nis_object *obj); void nis_print_object(const nis_object *obj); 説明これらのサブルーチンは、NIS+ アプリケーションの開発に役立ちます。 NIS+ 名および NIS+ オブジェクトのどちらにも効果的に操作をします。 最初のグループの nis_leaf_of()、 nis_domain_of()、 および nis_name_of() は NIS+ 名を解析する機能を持っています。 nis_leaf_of() は、 NIS+ 名の最初のラベルを戻します。 このルーチンは、 オブジェクト名の中に入っている `.' (ドット) の文字を保護するため二重引用符 `"' を使います。 戻される名前には後続のドット文字がないことに注意してください。 このルーチンにグローバル ルートディレクトリ名である "." を渡すと、空文字列が戻されます。 nis_domain_of() は、オブジェクトがある NIS+ ドメインの名前を戻します。 この名前は常に完全修飾の NIS+ 名であり、最後にドットが付いています。 nis_leaf_of() と nis_domain_of() を繰り返して呼び出すことによって、 NIS+ 名を個々のコンポーネントに分けることができます。 nis_name_of() を使用して、NIS+ 名のユニークな部分を抽出します。 この関数は、ローカルドメインで共通するすべての名前の後続部分からラベルを取り除きます。したがって、マシンがドメイン foo.bar.baz にあるときに、 nis_name_of() に名前 bob.friends.foo.bar.baz を渡すと、 nis_name_of() はユニークな部分である bob.friends を戻します。この関数に渡された名前がローカルドメインまたはその子にない場合は、ヌルが戻されます。 nis_getnames() は、 name として渡された名前の候補のリストを戻します。 渡された名前が完全修飾名でない場合は、 nis_getnames() はデフォルトの NIS+ ディレクトリ検索パスまたは環境変数 NIS_PATH の設定を用いて名前のリストを生成します。 戻されるポインタの配列は NULL ポインタで終了します。この配列に関連するメモリは、必ず nis_freenames() を呼び出して解放するようにします。 nis_dir_cmp() を使用すると、任意の 2 つの NIS+ 名を比較することができますが、この関数は本来、ドメインを比較するためのものです。 この関数の比較は大文字と小文字を区別しないで行われ、 結果は列挙型の name_pos です。 この関数に渡された名前が同じであると、 SAME_NAME の値が戻されます。 名前 n1 が名前 n2 の直接の祖先であると、 HIGHER_NAME の値が戻されます。 同様に、名前 n1 が名前 n2 の直接の子孫であると、 LOWER_NAME の値が戻されます。 名前 n1 が 名前 n2 の直接の祖先でも子孫でもない場合、つまり、2 つの名前がネーム空間の別の部分にある兄弟の場合は、 NOT_SEQUENTIAL の値が戻されます。 どちらかの名前が有効な名前として解析されなかった場合は、 BAD_NAME の値が戻されます。 2 番目のグループの nis_clone_object() と nis_destroy_object() は、オブジェクトの操作に使用します。 nis_clone_object() は、 NIS+ オブジェクト src の完全なコピー (クローン) を作成します。 dest の値がヌル以外のときは、オブジェクトのクローンを当該オブジェクト構造体の中に作成し、可変長の配列に必要なメモリを割り当てます。このパラメータがヌルのときは、クローンの対象とするオブジェクトを指すポインタを戻します。 nis_object 構造体についての説明は、 nis_objects(3N) を参照してください。 nis_destroy_object() を使用すると、 nis_clone_object() で作成されたオブジェクトを消去できます。 この関数は、オブジェクトに関連するメモリをすべて解放し、渡されるポインタを解除します。 オブジェクトのクローンを配列に作成した場合は (nis_clone_object() で dest パラメータを使用)、この関数を使用してもオブジェクトを解放できません。 このような場合は、代わりに xdr_free(xdr_nis_object, dest) を使用する必要があります。 nis_print_object() は NIS+ オブジェクト構造体の内容を標準出力にプリントします。 この関数は、主に NIS+ プログラムをデバッグする際に使用します。 マルチスレッドの使用法
これらの関数は、マルチスレッド環境で支障なく呼び出すことができます。 これらの関数は、キャンセルポイントの関数を呼び出した時点でキャンセルポイントになります。 マルチスレッド環境では fork() の後および exec() の前で、子プロセスからこれらの関数を呼び出すことは安全ではありません。 非同期キャンセル、または、非同期シグナルをサポートするマルチスレッドアプリケーションでこれらの関数は呼び出さないようにしてください。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||