
正文
Linux执行命令无回显 linux执行命令输出不显示
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Linux C程序 输入无回显问题
实现getch函数,直接调用即可:
#include stdio.h
#include unistd.h
#include termios.h
typedef enum {FALSE, TRUE} bool;
static struct termios newtermset, oldtermset;
void noecho(void)
{
tcgetattr(STDIN_FILENO, oldtermset);
newtermset = oldtermset;
newtermset.c_lflag = ~ICANON;
newtermset.c_lflag = ~ECHO;
newtermset.c_cc[VMIN] = 1;
tcsetattr(STDIN_FILENO, TCSANOW, newtermset);
}
void reset_term(void)
{
tcsetattr(STDIN_FILENO, TCSANOW, oldtermset);
}
int getch(void)
{
int ch;
noecho();
ch = getchar();
reset_term();
return ch;
}
int main(int argc, char **argv)
{
char buff[128];
int i, ch;
bool bshow = FALSE;
if (argc 1) bshow = TRUE;
printf("Please input your name: ");
for (i = 0; i sizeof(buff); ++i) {
if ('\n' == (ch = getch()))
break;
if (bshow) putchar('*');
buff[i] = ch;
}
buff[i] = '\0';
printf("\nYour name is: %s\n", buff);
return 0;
}
建议:若只是想使用getch函数来实现无回显输入功能,就不要用ncurses了,因为Linux执行命令无回显你得用它Linux执行命令无回显的话必须要进入curses环境,而在此环境中,很多C标准输入/输出函数都会运行得不正常!
上面这个程序其实就是对终端编程,具体可自行查阅相关方面内容。
PS:上面程序知道怎么编译和运行吧。Good Luck。
相关问答
Q1: 请教linux下如何不回显输入密码
这里已有答复:
LINUX里面,可以方便的设置输入不回显(通过设置终端属性),LINUX的开发者一般认为不回显比显示为*更安全(比如当密码只有一两位长度的时候,设置为*几乎没有一点安全性),所有系统本身不提供显示*的手段(WINDOWS提供这样的手段是安全性的定位为玩具级),但是如果某程序员实在太有个性,想使用玩具级别的*方式,程序上也是可以实现的,只是比较复杂而已。
也不知你用什么语言开发LINUX程序,无法直接给你写出程序,方法如下:
首先设置不回显,然后循环获取键盘缓冲区,如果是字符键就把其ASCII值添加到输入的字符串变量后面并显示一个*,如果是回车就结束输入,是删除键就删除字符串变量的最后一个字符,显示一个退格字符、空白字符、退格字符,其它非字符键忽略调,继续循环。
-供参考
Q2: linux开发板ch340控制台不显示命令
如果命令执行均正常,只是不显示键盘打印字符,那就只是stty的问题。我们通常会认为,敲了键盘,就应该有字出现在屏幕上。这是因为stty提供了字符回显。
各个把键盘键入的字符输出来的就是stty的输入回写功能,包括退格等字符处理,都是stty处理掉的。键盘给电脑的只有按键消息。怎么修复无回显的问题?在终端输入以下命令再回车即可。
为了避免之前有字符影响,可以先回车一下。执行后,回显就有了。
关于Linux执行命令无回显和linux执行命令输出不显示的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







