getutxline() - Line utmpx データベースによる検索

標準

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

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

両方  

形式

#define _XOPEN_SOURCE_EXTENDED 1
#include <utmpx.h>

struct utmpx *getutxline(const struct utmpx *line);

機能説明

getutxline() 関数は、utmpx データベースの現行地点から順方向に、line 引数で指定される utmpx 構造体内でそれと一致 する ut_line 値をとる LOGIN_PROCESS 型 または USER_PROCESS 型のエントリーを 見つけるまで、検索します。データベースがまだオープンされていない場合は、それをオープンします。データベースの終わりに達した場合は失敗です。

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

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

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

関数 getutxent()、getutxid()、および getutxline() は、データベース から読み取られた最後のエントリーをキャッシュします。このため、getutxline() 関数を使用して複数のオカレンスを検索するには、これらの関数からの戻り値によって指定される utmpx 構造体を すべてゼロにする必要があります。

要求に一致するすべてのエントリーの場合には、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 は意味がある。

戻り値

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

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

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

関連情報