Manpages

名 前

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

書 式

#include <unistd.h>

char *getpass(const char *prompt);

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

getpass():

glibc 2.2.2 以 降 :

_BSD_SOURCE ||
(_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
!(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)

glibc 2.2.2 よ り 前 : な し

説 明

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

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

返 り 値

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

エ ラ ー

こ の 関 数 は 以 下 の よ う な 場 合 に 失 敗 し う る 。

ENXIO プ ロ セ ス が 制 御 端 末 を 持 っ て い な い 。

フ ァ イ ル

/dev/tty

属 性

マ ル チ ス レ ッ デ ィ ン グ (pthreads(7) 参 照 )

getpass() 関 数 は ス レ ッ ド セ ー フ で は な い 。

準 拠

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

注 意

GNU C ラ イ ブ ラ リ の 実 装 で は 、 /dev/tty が オ ー プ ン で き な い 場 合 は promptstderr に 書 き 出 さ れ 、 パ ス ワ ー ド は 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 プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。