getlogin() - ユーザー・ログイン名の取得

標準

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

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

両方  

形式

_POSIX_SOURCE:
#define _POSIX_SOURCE
#include <unistd.h>

char *getlogin(void);
_XOPEN_SOURCE:
#define _XOPEN_SOURCE
#include <unistd.h>

char *getlogin(void);

機能説明

ログイン・プロセスが現行の端末に関連する名前を検索します。このストリングは、静的データ領域に保管されるため、getlogin() が呼び出されるたびに上書きされます。

_POSIX_SOURCE の特殊な動作: バッチ・プログラム、TSO コマンド、またはシェル・コマンドから 呼び出される場合、getlogin() はプログラムに関連した MVS™ ユーザー名を 戻します。z/OS®UNIX サービスでは、この名前は TSO/E ユーザー ID です。_POSIX_SOURCE が定義され、_XOPEN_SOURCE が定義されていない場合、getlogin() は __getlogin1() と同じです。

XPG4.2 の特殊な動作: TTY をファイル記述子 0、1、または 2 で持たなければなりません。また、その TTY は、/etc/utmpx データベースに記録されなければなりません。この TTY を使用したログインが実行されていることが必要です。また、プログラムはシェル・セッションから呼び出さなければならず、ファイル記述子 0、1、および 2 のすべてがリダイレクトされるわけではありません。

getlogin() でログイン名が判別されない場合は、getuid() を呼び出して プロセスのユーザー ID を取得してから、getpwuid() を呼び出すと、そのユーザー ID に関連したログイン名を取得することができます。複数のユーザーが同じ UID を持っていても、getpwuid() は常に同じユーザー の passwd struct を戻します。

戻り値

正常に実行された場合、getlogin() は現行の端末のログイン名を持つストリングへのポインターを戻します。

_POSIX_SOURCE の特殊な動作: 正常に実行されなかった場合、getlogin() は NULL ポインターを戻します。

文書化される errno 値はありません。

XPG4.2 の特殊な動作: 正常に実行されなかった場合、getlogin() は NULL ポインターを戻し、errno を以下のいずれかの値に設定します。
エラー・コード
説明
EMFILE
OPEN_MAX ファイル記述子が呼び出しプロセスで現在 オープンされています。
ENFILE
最大許容数のファイルが、現在システムでオープンしています。
ENXIO
呼び出しプロセスに制御端末がありません。

CELEBG12
⁄* CELEBG12

   This example gets the user login name.

 *⁄
#define _POSIX_SOURCE
#include <stdio.h>
#include <unistd.h>

main() {
  char *user;

  if ((user = __getlogin1()) == NULL)
    perror("__getlogin1() error");
  else printf("__getlogin1() returned %s¥n", user);
}
出力:
getlogin() returned MEGA

関連情報