Linux鍵盤輸入時如何隱藏輸入的字串

2021-10-04 04:03:50 字數 803 閱讀 5817

今天遇到乙個小需求,執行某個應用程式時,需要驗證密碼,不能顯示輸入的內容,即不回顯。

有人推薦使用 getpass()函式,通過man查閱發現該介面提示被淘汰,建議使用 termios。

於是經過多方調研,決定使用getch()函式,並配合 termios使用,關鍵**如下:

set_disp_mode()介面用於設定是否回顯輸入,在輸入密碼前通過 set_disp_mode(stdin_fileno, 0) 不回顯,密碼輸入結束後再通過 set_disp_mode(stdin_fileno, 1)開啟回顯即可。

int set_disp_mode(int fd, int option)

if(option)

term.c_lflag|=echoflags;

else

term.c_lflag &=~echoflags;

err=tcsetattr(fd,tcsaflush,&term);

if(err==-1 && err==eintr)

return 0;

}

然後呼叫getch()迴圈讀取使用者的輸入:

for (i = 0; i < sizeof(key_buf)/sizeof(char); i++)

}

當然,這裡也可以使用while()迴圈來控制,都一樣。

需要注意的是getch()介面每次呼叫只會從鍵盤讀取1個字元,個人輸入以回車符判斷結束,getch()會從緩衝區依次讀取鍵盤輸入的字元,這也就是為什麼輸入一串字元後,迴圈呼叫getch()能得到想要的結果。

python如何獲取鍵盤輸入

python2中 raw input函式 raw input 函式從標準輸入讀取乙個行,並返回乙個字串 去掉結尾的換行符 str raw input enter your input print received input is str這將提示你輸入任意字串,然後在螢幕上顯示相同的字串。當我輸入 ...

Linux 下模擬鍵盤輸入

linux 下模擬鍵盤輸入 基於gtk 與 fakekey 將模擬鍵盤與pc機鍵盤鏈結在一起 include include include include display disp fakekey fk gtkwidget win null static char numkeyboard disp...

wap檔案 鍵盤輸入時間和頁面內部事件

wml學習之鍵盤輸入事件 wml的事件基本上分為兩大類,一類是鍵盤 包括軟硬按鈕 輸入事件,用標籤來 處理,另一類是相關頁面內部的事件,用標籤來處理。的語法如下 e true 任務 任務就是以前提到的四種任務。的屬性中,type是必選的,其 他為可選。label屬性,指定了軟按鈕在螢幕上的顯示文字。...