GETPASS - Linux手册页

时间:2019-08-20 18:00:30  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2019-03-06

名称

getpass-获取密码

语法

#包括

char * getpass(const char * prompt);

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

getpass():

Since glibc 2.2.2:
_XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L)
    || /* Glibc since 2.19: */ _DEFAULT_SOURCE
    || /* Glibc versions <= 2.19: */ _BSD_SOURCE
Before glibc 2.2.2:
没有

说明

该功能已过时。不要使用它。如果要在未启用终端回显的情况下读取输入,请参阅termios(3)中ECHO标志的描述。

getpass()函数打开/ dev / tty(进程的控制终端),输出字符串提示,关闭回显,读取一行("密码"),恢复终端状态并再次关闭/ dev / tty。

返回值

函数getpass()返回一个指向静态缓冲区的指针,该缓冲区包含密码(密码的前PASS_MAX个字节),不包含结尾的换行符,并以空字节(aq \ 0aq)终止。后续调用可能会覆盖此缓冲区。错误时,将恢复终端状态,正确设置errno,然后返回NULL。

错误说明

该功能可能会失败,如果

ENXIO
该过程没有控制终端。

文件

/ dev / tty

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
getpass()Thread safetyMT-Unsafe term

遵循规范

存在于SUSv2中,但标记为LEGACY。在POSIX.1-2001中删除。

备注

在GNU C库实现中,如果无法打开/ dev / tty,则将提示写入stderr,并从stdin中读取密码。密码的长度没有限制。线路编辑未禁用。

根据SUSv2,如果小于8,则必须定义PASS_MAX的值,并且在任何情况下都可以使用sysconf(_SC_PASS_MAX)获得。但是,POSIX.2撤回常量PASS_MAX和_SC_PASS_MAX,以及函数getpass()。 glibc版本接受_SC_PASS_MAX并返回BUFSIZ(例如8192)。

BUGS

调用进程应尽快将密码清零,以避免在进程的地址空间中使明文密码可见。

另外参见

隐窝(3)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/