名称
nis_ping, nis_checkpoint ― その他の NIS+ ログ管理関数
構文
cc [ flag... ] file... -lnsl [ library... ]
#include <rpcsvc/nis.h>
void nis_ping(const nis_name dirname,
const u_long utime,
const nis_object *dirobj);
nis_result *nis_checkpoint(const nis_name dirname);
説明
nis_ping() は、ディレクトリ内で変更があったときに、そのディレクトリのマスターサーバによって呼び出されます。
パラメータ dirname は、変更があったディレクトリを示します。 パラメータ dirobj が NULL であると、この関数は dirname のディレクトリオブジェクトを調べ、その中に入っているレプリカのリストを使用します。
パラメータ utime には、ディレクトリに加えられた前回の変更のタイムスタンプが入ります。
このタイムスタンプは、ディレクトリに加えられた更新を検索するときに、レプリカによって使用されます。
nis_ping() を呼び出すことによって、レプリカの更新がスケジュールに入れられます。
ping を受け取った直後に、一般的には約 2 分後に、レプリカはそのデータベースの前回の更新時刻と
ping から送られたタイムスタンプを比較します。 ping のタイムスタンプの方が新しい場合、レプリカはマスターサーバとの接続を確立し、ログ
(ローカルログに記録) にある前回の更新後に発生した変更をすべて要求します。
nis_checkpoint() を使用して、ログに記録されている情報のうち、まだディスクにチェックポイントされていないものを強制的にチェックポイントするようサービスに指示します。
この関数は、呼び出された時点で、ディレクトリ中の各テーブルのデータベース、ディレクトリが入っているデータベース、およびトランザクションログをチェックポイントします。
変更が多いディレクトリのチェックポイントには数分間かかることがあるので、この関数の呼び出しには十分な注意が必要です。
チェックポイントプロセスが進行中のときには、当該マシンがマスターとして機能するすべてのディレクトリの更新ができなくなります。
nis_checkpoint() は nis_result 構造体 ( nis_tables(3N) で説明) を指すポインタを戻します。
この構造体は、 nis_freeresult() ( nis_names(3N) を参照) で解放する必要があります。
戻された結果の中で必要な項目は、ステータス値と統計情報だけです。
マルチスレッドの使用法
| Thread
Safe: | | Yes |
| Cancel Safe: | | Yes |
| Fork Safe: | | No |
| Async-cancel Safe: |
| | | No |
| Async-signal Safe: |
| | | No |
これらの関数は、マルチスレッド環境で支障なく呼び出すことができます。
これらの関数は、キャンセルポイントの関数を呼び出した時点でキャンセルポイントになります。
マルチスレッド環境では fork() の後および exec() の前で、子プロセスからこれらの関数を呼び出すことは安全ではありません。
非同期キャンセル、または、非同期シグナルをサポートするマルチスレッドアプリケーションでこれらの関数は呼び出さないようにしてください。
警告
HP-UX 11i Version 2 は、NIS+ がサポートされる最後の HP-UX
リリースです。
NIS+ の代わりに LDAP を推奨します。 HP は、LDAP に基づく業界標準のネームサービスを完全にサポートします。