終端控制 如何在不輸入回車讀入字元

2021-06-18 12:51:31 字數 832 閱讀 9768

摘要:一般情況下,我們在終端輸入一些字元,輸入的同時可以編輯(增加,刪除,修改),然後輸入回車,這些字元被送到緩衝區。但是,在more程式和其他的程式中,比如遊戲中的快捷鍵,我們需要的是不用輸入回車就可以讀取字元。此時,我們就需要了解如何控制終端,使得在不輸入回車的情況下就可以讀入字元。

首先,我們看一下這個程式的實現:

#include#include#include#includeint kbhit();

int main(int argc, char *argv)

}system("stty cooked echo");

return 0;

}int kbhit()

解析:

stty raw:將終端設定為阻塞模式,實現實時讀取

ioctl:查詢鍵盤緩衝區狀態

函式名: ioctl

標頭檔案:#include

功 能: 控制i/o裝置 ,提供了一種獲得裝置資訊和向裝置傳送控制引數的手段。用於向裝置發控制和配置命令 ,有些命令需要控制引數,這些資料是不能用read / write 讀寫的,稱為out-of-band資料。也就是說,read / write 讀寫的資料是in-band資料,是i/o操作的主體,而ioctl 命令傳送的是控制資訊,其中的資料是輔助的資料。

用 法: int ioctl(int handle, int cmd,[int *argdx, int argcx]);

返回值:成功為0,出錯為-1

fionread : 通過由ioctl的第三個引數指向的整數返回當前在本套介面接收緩衝區中的位元組數。本特性同樣適用於檔案,管道和終端。

如何在終端編輯命令

在終端輸入各種命令的時候,經常會有打錯字的情況,以前我唯一的辦法就是乙個游標乙個游標的向前或向後移動,但是這樣真的非常沒有效率。後來發現原來在終端可以直接編輯文字的,就像在vim一樣,雖然沒有那麼強大,但是足夠用了。下面就把常用的那些自己總結一下。1 將游標移動到命令的最前面 ctrl a 2 移動...

如何在終端編輯命令

在終端輸入各種命令的時候,經常會有打錯字的情況,以前我唯一的辦法就是乙個游標乙個游標的向前或向後移動,但是這樣真的非常沒有效率。後來發現原來在終端可以直接編輯文字的,就像在vim一樣,雖然沒有那麼強大,但是足夠用了。下面就把常用的那些自己總結一下。1 將游標移動到命令的最前面 ctrl a 2 移動...

如何設定ssh本機時不輸入密碼

今天在設定linux免登入的時候,按照hadoop官方說明的ssh設定,然後通過ssh localhost測試,可是總是提示要輸入密碼。ssh keygen t dsa p f ssh id dsa cat ssh id dsa.pub ssh authorized keys 琢磨了一下ssh的原理...