getutxid() - ID utmpx データベースによる検索

標準

標準/拡張機能 C/C++ 依存項目

XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#define _XOPEN_SOURCE_EXTENDED 1
#include <utmpx.h>

struct utmpx *getutxid(const struct utmpx *id);

機能説明

getutxid() 関数は、utmpx データベース内の現在地点から順方向に 検索します。データベースがまだオープンされていない場合は、それをオープンします。id で指定される utmpx 構造体の ut_type が、BOOT_TIME__RUN_LVLOLD_TIME、または NEW_TIME である場合、ut_type 値と一致したエントリーが検出されると停止します。ut_type 値が、INIT_PROCESSLOGIN_PROCESSUSER_PROCESS、または DEAD_PROCESS である場合、タイプがこれらの 4 つのうちのいずれかであり、ut_id メンバーが id で指定される utmpx 構造体の ut_id メンバーと 一致するエントリーが検出されると停止します。UT_type 値が EMPTY の場合、getutxid() は失敗します (NULL が戻されます)。utmpx データベースは、そのデータベースの最後に位置変更されることはありません。一致が 1 つもないままデータベースの最後に達すると、getutxid() は失敗します。

pututxline() 関数は、書き込み可能状態にあるレコードのバイト範囲で utmpx データベースの中に排他ロックを入手し、その呼び出し元に戻る前にそのロックをリリースします。 関数 getutxent()、getutxid()、および getutxline() は、読み取りを継続する可能性があり、pututxline() に影響を受けません。

getutxid() 関数は、スレッド固有のデータを戻すので、マルチスレッド・アプリケーションから使用しても安全です。同じプロセスの複数のスレッドがデータベースをオープンすると、各スレッドは、異なるファイル記述子を使用してデータベースをオープンします。スレッドのデータベース・ファイル記述子は、呼び出しスレッドが終了したか、あるいは呼び出しスレッドによって endutxent() 関数が呼び出されたときにクローズされます。

データベース・ファイルのデフォルト名は、/etc/utmpx です。異なる データベース・ファイル名を処理するには __utmpxname() 関数を使用します。

要求に一致するすべてのエントリーの場合には、ut_type メンバ ーは、エントリーの型を示しています。エントリーのほかのメンバーには、次のような、ut_type メンバーの値に基づく意味のあるデータ が含まれます。
EMPTY
意味のあるデータをとるメンバーがほかにない。
BOOT_TIME
ut_tv は意味がある。
__RUN_LVL
ut_tv および ut_line は意味がある。
OLD_TIME
ut_tv は意味がある。
NEW_TIME
ut_tv は意味がある。
USER_PROCESS
ut_id、ut_user (ユーザーのログイン名)、ut_line、ut_pid、および ut_tv は意味がある。
INIT_PROCESS
ut_id、ut_pid、および ut_tv は意味がある。
LOGIN_PROCESS
ut_id、ut_user (インプリメンテーション固有のログイン・プロセス名)、ut_pid、および ut_tv は意味がある。
DEAD_PROCESS
ut_id、ut_pid、および ut_tv は意味がある。

戻り値

正常に実行された場合、getutxid() は、ユーザー・アカウント・データベース内の要求エントリーのコピーを持つ、utmpx 構造体へのポインターを戻します。

正常に実行されなかった場合、getutxid() は NULL ポインターを戻します。

この関数に定義されたエラーはありません。

関連情報