gpt4 book ai didi

c++ - 清除标准输入缓冲区(内存占用)

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:11 36 4
gpt4 key购买 nike

在我的情况下,我的应用程序的用户被要求输入他们的密码来启动它。要获取密码,我只需使用:

char c;  
std::string password;
while ... // until the end of entry
{
c = fgetc(stdin);
password += c;
}

检查密码后,我会销毁该变量,因此无法使用我的程序的核心镜像检索它。例如,如果有人使用“gcore”命令,然后在生成的核心中搜索密码,它将找不到。

但就我而言,我仍然可以检索密码值,因为它似乎仍在标准输入缓冲区中。

所以我的问题是如何清除标准输入缓冲区以使用户键入的值在内存中不再可用?

有关我已经尝试过的信息:fflush、__fpurge、fwrite(从 stdin 流的开始位置开始)...但似乎没有任何效果。

提前谢谢你。

最佳答案

我的回答是:不要使用独立的 I/O 流——而是使用原始文件 I/O:

read(STDIN_FILENO, ...)

您必须自己做行缓冲,但您可以保证库中没有任何内容保留您的输入缓冲区。

关于c++ - 清除标准输入缓冲区(内存占用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17954542/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com