名前 | 形式 | 機能説明 | 属性 | 戻り値 | エラー | 注意事項 | 関連項目
#include <tsol/prof.h>profent_t *getprofentbyname(char *name, int src);
これらの関数は、tsolprof NIS+ データベースまたは /etc/security/tsol/tsoluser ファイルから Trusted Solaris ユーザープロファイルについて説明するエントリを取得するのに使用します。
getprofentbyname() は、パラメータ name に指定されるプロファイル名を持つプロファイルについての情報を検索します。
関数 setprofent()、getprofent()、および endprofent() は、データベースからプロファイルエントリを列挙するのに使用します。setprofent() は、Trusted Solaris プロファイルエントリのセットの先頭への列挙を設定します (または取り消します)。この関数は、getprofent() を初めて呼び出す前に呼び出すようにします。getprofentbyname() を呼び出すと、列挙位置が不確定な状態のままになります。stayopen フラグがゼロ以外の場合は、これ以降に endprofent() を呼び出すまで、オープンファイル記述子などの割り当て済み資源が保管されます。
getprofent() を連続して呼び出すと、エントリが連続して返されるか、列挙の終了を示す NULL が返されます。
endprofent()を呼び出すと、呼び出し元がこれ以上プロファイルエントリの検索操作を実行したくないことを示すことができます。このとき、使用されていた資源の割り当てが解除されます。endprofent() の呼び出し後もプロセスがさらにプロファイルエントリ検索関数を呼び出すことが可能ですが、効率は悪くなります。
関数 getprofentbyname() と getprofent() は、返された結果を格納するためのメモリを割り当てる再入可能インタフェースで、単一スレッドアプリケーションとマルチスレッドアプリケーションのどちらで使用しても安全です。getprofentbyname() または getprofent() のいずれかによって返されるポインタを解放するには、関数 free_profent() を使用します。
パラメータ name は、NULL で終わる文字列の形式をとるプロファイル名へのポインタでなくてはなりません。
パラメータ src は、
<tsol/tsol.h> に定義されている
TSOL_DB_SRC_FILES
、TSOL_DB_SRC_NISPLUS
、TSOL_DB_SRC_SWITCH
のどれに設定してもかまいません。ほとんどのアプリケーションでは、src パラメータは、システムが /etc/nsswitch.conf ファイルを使用してデータベースの最終的なソースを判別することを示す TSOL_DB_SRC_SWITCH
に設定します。ただし、一部の管理アプリケーションでは、/etc/security/tsol/tsoluser ファイルからの読み取りには TSOL_DB_SRC_FILES
オプションを、tsoluser NIS+ データベースからの読み取りを強制するには TSOL_DB_SRC_NISPLUS
オプションを使用します。
マルチスレッドアプリケーションでの列挙の場合、列挙内の位置はすべてのスレッドが共有するプロセス全体の属性です。マルチスレッドアプリケーションでは setprofent() を使用できますが、これを使用すると、すべてのスレッドの列挙位置が取り消されます。複数のスレッドで getprofent() の呼び出しをインタリーブすると、スレッドは tsolprof database と無関係なサブセットを列挙します。
次の属性の説明については、attributes(5) のマニュアルページを参照してください。
属性タイプ | 属性値 |
---|---|
使用条件 | SUNWtsu |
MT レベル | MT- 安全 |
typedef struct profent_t { char *name; /* name of profile */ char *desc; /* description */ char *auths; /* comma separated list of authorization numbers */ profact_t *actions; /* linked list of actions */ profcmd_t *cmds; /* linked list of commands */ } profent_t;
関数 getprofentbyname() は、要求されたエントリが見つかった場合は profent_t へのポインタを返し、それ以外の場合は NULL を返します。
関数 getprofent() は、エントリを正しく列挙できた場合は struct profent_t へのポインタを返し、それ以外の場合は、列挙の終了を示す NULL を返します。
関数 getprofentbyname() と getprofent() は、失敗時には NULL を返します。
これらの関数を実行すると、実行時に共有オブジェクトの動的な読み込みとリンクが適用されるため、このマニュアルページで説明するインタフェースを使用するプログラムを静的にリンクすることはできません。
マルチスレッドアプリケーションをコンパイルする際、REENTRANT フラグの使い方については、Intro(3) の「マルチスレッドプログラミングに関する注意事項」を参照してください。