今天遇到乙個小需求,執行某個應用程式時,需要驗證密碼,不能顯示輸入的內容,即不回顯。
有人推薦使用 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屬性,指定了軟按鈕在螢幕上的顯示文字。...