日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

python getchar函数_linux命令行下用getchar()函数捕获按键

發(fā)布時間:2023/12/16 linux 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python getchar函数_linux命令行下用getchar()函数捕获按键 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在平常用getchar()函數(shù)記錄輸入時通常要按下enter鍵程序才能執(zhí)行,例如下面的程序:

int c;

while((c=getchar())!= EOF)

putchar(c); 每次輸入一個字符后要按enter才能顯示輸入的字符c,而且命令行還會回顯字符,如果不想用curses.h中的getch()函數(shù),又想捕獲在命令行中捕獲按鍵,那么我們可以對終端屬性進(jìn)行簡單的設(shè)置來達(dá)到目的。

#include

#include

#include

int main()

{

int c;

static struct termios oldt, newt;

/* 將當(dāng)前設(shè)置寫入oldt。

*/

tcgetattr( STDIN_FILENO, &oldt );

newt = oldt;

/* ICANON 如果在輸入中看到"\n"或者EOF,會返回緩沖區(qū)內(nèi)容

* ECHO 用還控制回顯

*/

newt.c_lflag &=~(ICANON | ECHO); // 設(shè)置新的終端屬性

/*

*TCSANOW 告訴函數(shù)立即改變終端的STDIN_FILENO屬性值

*/

tcsetattr( STDIN_FILENO, TCSANOW, &newt );

// 當(dāng)輸入e時結(jié)束循環(huán)

while( (c=getchar())!='e' ){

putchar(c);

}

// 恢復(fù)終端設(shè)置

tcsetattr( STDIN_FILENO, TCSANOW, &oldt );

return 0;

} 如果想要回顯則可以去掉ECHO, newt.c_lflag &=~( ICANON );

由于采用這樣的方法后,getchar會捕獲enter鍵并輸出換行,所以我們要用一個自定義的字符控制循環(huán)。

關(guān)于終端的更多屬性信息,可以用man命令查看,例如man termios

總結(jié)

以上是生活随笔為你收集整理的python getchar函数_linux命令行下用getchar()函数捕获按键的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。