GETPASS - Linux手册页
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)。
Interface | Attribute | Value |
getpass() | Thread safety | MT-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/。