標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
POSIX.1 |
両方 |
#define _POSIX_SOURCE
#include <unistd.h>
char *getlogin(void);
#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 値はありません。
⁄* 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