kazmax - Linux で自宅サーバー

login - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. GNU 版の詳細
  5. 返り値
  6. 注意
  7. ファイル
  8. 準拠
  9. 関連項目

名前

login, logout - utmp と wtmp エントリを書き込む

書式

#include <utmp.h>
void login(const struct utmp * ut );
int logout(const char * ut_line );

説明

utmp ファイルは現在システムを使用しているユーザを記録する。 wtmp ファイルはすべてのログインとログアウトを記録する。   utmp (5) を参照すること。

関数 login ()は与えられた struct utmp ut を utmp と wtmp ファイルの両方に書き込む。

関数 logout ()は utmp ファイルにあるエントリをクリアする。

GNU 版の詳細

より正確には、 login ()は引き数 ut 構造体をとり、(もし存在するならば) フィールド ut->ut_typeUSER_PROCESS という値にし、(もし存在するならば) フィールド ut->ut_pid を呼び出し元プロセスのプロセス ID の値にする。 次にフィールド ut->ut_line の値を設定しようとする。 この関数は、標準入力・標準出力・標準エラー出力の中から 端末 (tty) である最初のものをとり、 対応するパス名から先頭の /dev/ を引いたものを このフィールドに格納して、この構造体を utmp ファイルに書き込む。 一方、端末名が見つからない場合は、このフィールドは "???" とされて、 この構造体は utmp ファイルに書き込まれない。 その後にこの構造体は wtmp ファイルに書き込まれる。

logout ()関数は utmp ファイルから ut_line 引き数にマッチするエントリを探す。 レコードが見つかった場合、 ut_nameut_host フィールドをクリアして、 ut_tv タイムスタンプフィールドを更新し、 (もし存在するならば) ut_type フィールドを DEAD_PROCESS に更新する。

返り値

エントリをデータベースに書き込むのに成功した場合、 logout ()関数は 1 を返す。 またエラーが起こった場合、0 を返す。

注意

これらの関数は libutil に含まれている。 よって -lutil をコンパイラのコマンドラインに追加する必要があるだろう。
struct utmp のメンバ ut_user は、BSD では ut_name という名前である点に注意すること。 そのため ut_name<utmp.h> において ut_user のエイリアスとして定義されている。

ファイル

/var/run/utmp
ユーザアカウントデータベース。 <paths.h> における _PATH_UTMP で設定されている。
/var/log/wtmp
ユーザアカウントログファイル。 <paths.h> における _PATH_WTMP で設定されている。

準拠

POSIX.1-2001 にはない。 BSD 系に存在する。

関連項目