| 日本−日本語 |
|
|
|
![]() |
HP-UX リファレンス: セクション 3 : ライブラリ (N~Z) > nnis_names(3N)HP-UX 11i Version 2: September 2004 |
|
名称nis_names, nis_lookup, nis_add, nis_remove, nis_modify, nis_freeresult ― NIS+ ネーム空間の関数 構文cc [ flag... ] file... -lnsl [ library... ] #include <rpcsvc/nis.h> nis_result *nis_lookup(const nis_name name, const u_long flags); nis_result *nis_add(const nis_name name, const nis_object *obj); nis_result *nis_remove(const nis_name name, const nis_object *obj); nis_result *nis_modify(const nis_name name, const nis_object *obj); void nis_freeresult(nis_result *result); 説明これらの関数を使用して、NIS+ エントリ以外の NIS+ オブジェクト ( nis_objects (3N) を参照) を見つけ出し、操作します。 NIS+ テーブル内にある NIS+ エントリオブジェクトを見つけ出すには、 nis_subr(3N) を参照してください。 nis_lookup() は NIS+ 名を解決し、 NIS+ サーバーから該当するオブジェクトのコピーを戻します。 nis_add() は NIS+ ネーム空間にオブジェクトを追加し、 nis_remove() は NIS+ ネーム空間からオブジェクトを削除します。 nis_modify() は既にネーム空間にあるオブジェクトの特定の属性を変更します。 これらの関数は、 NIS+ ディレクトリ、 NIS+ テーブル、NIS+ グループ、または NIS+ プライベートの各オブジェクトを参照する名前とともに使用しなければなりません。 NIS+ エントリオブジェクトを参照する名前の場合は、 nis_subr(3N) にリストしている関数を使用する必要があります。 nis_freeresult() は、 nis_result 構造体に関連するすべてのメモリを解放します。 NIS+ の結果に関連するメモリを解放するには、必ずこの関数を呼び出します。 nis_lookup()、 nis_add()、 nis_remove() 、および nis_modify() はすべて、 nis_result 構造体を指すポインタを戻します。この構造体は、使用が終わりしだい、 nis_freeresult() を呼び出して 必ず 解放しなければなりません。 この構造体に戻されたオブジェクトをいくつか保持したい場合は、 nis_clone_object(3N) ( nis_subr (3N) を参照) を使用してコピーするようにします。 nis_lookup() は 2 つのパラメータを受け付けます。1 つは、 name に指定する解決の対象とするオブジェクトの名前であり、もう 1 つは、以下に説明しているフラグパラメータの flags です。オブジェクト名はインデックス名以外の NIS+ 名 ( nis_tables (3N) を参照) に対応するものでなければなりません。 このグループの関数の中で、 nis_lookup() 関数 だけ に部分修飾名を指定することができます。 パラメータ name が部分修飾名のときには、呼び出しでフラグ EXPAND_NAME を指定する 必要があります。 このフラグを省略すると、この関数は NIS_BADNAME のエラーで異常終了します。 flags パラメータには、以下に示すフラグを論理 OR で結んで指定します。
ステータス値を ASCII テキストに変換するには、 nis_sperrno() 関数 ( nis_error(3N) を参照) を使用します。 戻された結果の objects 配列には、要求で解決されたオブジェクトがいくつも入っていることがあります。 FOLLOW_LINKS フラグを指定した場合は、対象とするリンクがテーブル内でポイントしているときに、関数が正しく終了することによっていくつものエントリが戻されることがあります。 リンクに従う際にエラーが発生すると、objects 配列にはリンクオブジェクトのコピーがそのまま入ります。 nis_add() 関数はオブジェクト obj を受け付け、それを name の名前で NIS+ ネーム空間に追加します。 この操作は、要求を出すクライアントがオブジェクトの追加先とするドメインに対して 作成 アクセス権を持っていない限り、異常終了します。 パラメータ name には完全修飾の NIS+ 名を指定する必要があります。 オブジェクトメンバーの zo_name と zo_domain がこの名前を使用して作成されます。 既に同じオブジェクトがあれば、この操作は異常終了します。 そのため、別のプロセスによって追加された別のオブジェクトを誤って上書きしてオブジェクトを追加するようなことはありません。 nis_remove() 関数は name で指示された名前を持つオブジェクトを NIS+ ネーム空間から削除します。 この要求を出すクライアントは、オブジェクトのあるドメインに対して 消去 アクセス権を持っていなければなりません。 指定したオブジェクトがリンクの場合は、そのポイント先のオブジェクトではなく、リンクが削除されます。 パラメータ obj が NULL 以外のときは、削除対象のオブジェクトのコピーを指しているものとみなされます。 この場合、渡されたオブジェクトと同じ識別子のオブジェクトがサーバー上にないときは、 NIS_NOTSAMEOBJ のエラーで操作が異常終了します。 そのため、目的のオブジェクトだけの削除が確実に行われるようになります。 パラメータ name には完全修飾の NIS+ 名を指定する必要があります。 nis_modify() 関数は name で指示されたオブジェクトを、 obj が指すオブジェクト中のフィールド値に変更します。 このオブジェクトには、ネーム空間にある変更対象のオブジェクトのコピーが入っていなければなりません。 渡されたオブジェクトの識別子がネーム空間にある変更対象のオブジェクトの識別子と一致しない場合、この操作はエラー NIS_NOTSAMEOBJ で異常終了します。 注 : 通常、 nis_object 構造体のメンバー zo_name の内容は、 name パラメータで渡された名前から作成されます。 ただし、NULL 以外の場合には、クライアントライブラリは zo_name メンバー中の名前を使用してオブジェクトの名前変更操作を実行します。 この名前に `.'(ドット) がある場合は、 必ず 引用符で囲まなければなりません。 この条件を満たしていないと、操作は異常終了し、NIS_BADNAME のエラーコードが戻されます。 結果関数は、 nis_result 型の構造体を指すポインタを戻します。 struct nis_result { status メンバーには操作のエラーステータスが入ります。 エラーを説明するテキストメッセージを得るには、 nis_sperrno() 関数 ( nis_error(3N) を参照) を呼び出します。 objects 構造体には 2 つのメンバーが含まれています。 1 つは objects_val で、 nis_object 構造体の配列です。もう 1 つは objects_len で、配列内のセル数を示します。 これらのオブジェクトを解放するには nis_freeresult() を呼び出します。 オブジェクトをいくつか保持したい場合は、 nis_clone_object() 関数でコピーしてから オブジェクトを nis_destroy_object() 関数 ( nis_server(3N) を参照) で解放します。 nis_object 構造体 についての詳細は、 nis_objects(3N) を参照してください。 要求においてかかった種々の時間の明細も含まれています。 これらの時間明細を使用することによって、高速にアクセスできるようデータの編成方法を調整したり、別の実装方法のデータベースと比較したり ( nis_db(3N) を参照) できます。
zticks の値から dticks の値を差し引くと、サービスコード自体にかかった時間となります。 cticks の値から zticks の値と aticks の値の合計を差し引くと、クライアントライブラリ自体にかかった時間となります。 注 : 時間はすべてマイクロ秒で測定されます。 マルチスレッドの使用法
これらの関数は、マルチスレッド環境で支障なく呼び出すことができます。 これらの関数は、キャンセルポイントの関数を呼び出した時点でキャンセルポイントになります。 マルチスレッド環境では fork() の後および exec() の前の子プロセスでこれらの関数を呼び出すことは安全ではありません。 非同期キャンセルまたは非同期シグナルをサポートするマルチスレッドアプリケーションでこれらの関数を呼び出さないようにしてください。 戻り値クライアントライブラリから種々のエラーや診断が戻ります。一般的なものを以下に説明します。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||