GETPASS

Section: Linux Programmer's Manual (3)
Updated: 2019-03-06
Index JM Home Page
 

名前

getpass - パスワードを取得する  

書式

#include <unistd.h>

char *getpass(const char *prompt);

glibc 向けの機能検査マクロの要件 (feature_test_macros(7) 参照):

getpass():

glibc 2.2.2 以降:
_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
    || /* glibc 2.19 以降: */ _DEFAULT_SOURCE
    || /* glibc <= 2.19: */ _BSD_SOURCE
glibc 2.2.2 より前:
なし
 

説明

この関数は時代遅れ (obsolete) である。使用しないこと。端末のエコーを有効にせずに入力の読み込みを行いたい場合は、 termios(3) の ECHO フラグの説明を参照のこと。

getpass() 関数は /dev/tty (プロセスの制御端末) をオープンし、文字列 prompt を出力する。そして echo をオフにし、一行 (「パスワード」) を読み込み、端末の状態を元に戻して、再び /dev/tty をクローズする。  

返り値

getpass() 関数は入力されたパスワード (の最初の PASS_MAX バイトまで) が書きこまれた、 スタティックなバッファーへのポインターを返す。 末尾の改行は含まれない。この文字列はヌルバイト ('\0') で終端される。 このバッファーは、以降の関数コールで上書きされるかもしれない。 エラーが起こると、端末の状態を復元し、 errno を適切な値に設定して、NULL を返す。  

エラー

この関数は以下のような場合に失敗しうる。
ENXIO
プロセスが制御端末を持っていない。
 

ファイル

/dev/tty  

属性

この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース 属性 値
getpass() Thread safety MT-Unsafe term
 

準拠

SUSv2 には存在するが、過去の名残 (LEGACY) と位置付けられている。 POSIX.1-2001 で削除された。  

注意

GNU C ライブラリの実装では、 /dev/tty がオープンできない場合は prompt は stderr に書き出され、パスワードは stdin から読み込まれた。 パスワードの長さには制限はなく、 行編集も無効にはされなかった。

SUSv2 によれば、 PASS_MAX の値が 8 以下の場合は、この値は <limits.h> で定義されていなければならない。 いずれの場合でもこの値は sysconf(_SC_PASS_MAX) によって取得できる。 しかし、POSIX.2 は定数 PASS_MAX, _SC_PASS_MAX と関数 getpass() を取り下げた。 glibc 版は _SC_PASS_MAX を受け付け、 BUFSIZE (例えば 8192) を返す。  

バグ

この関数を呼び出したプロセスは、 できる限り早くそのパスワードを消去 (ゼロクリア) し、 クリアテキストのパスワードが そのプロセスのアドレス空間で見えないようにすべきである。  

関連項目

crypt(3)  

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

パスワード   端末   getpass   制御   オープン   バッファー   SUSv   unistd   検査   マクロ   要件   macros   時代遅れ   obsolete   エコー   読み込み   フラグ   オフ   一行   クローズ   最初   バイト   ポインター   末尾   改行

Linux マニュアル 一覧

関連するコマンド・関数

chpasswd.8   tty.4   ypchfn.1   ypchsh.1   yppasswd.1   endpwent.3
 

Index

名前
書式
説明
返り値
エラー
ファイル
属性
準拠
注意
バグ
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:28 GMT, October 11, 2026