LINUX 使用tcgetattr函数与tcsetattr函数控制终端一
為了便于通過程序來獲得和修改終端參數,Linux還提供了tcgetattr函數和tcsetattr函數。tcgetattr用于獲取終端的相關參數,而tcsetattr函數用于設置終端參數。這兩個函數的具體信息如表6.2所示。
表6.2 tcgetattr函數和tcsetattr函數
| 頭文件 | <termios.h> <unistd.h> | ||
| 函數形式 | int tcgetattr(int fd, struct termios *termios_p); int tcsetattr(int fd, int optional_actions, const struct termios *termios_p); | ||
| 返回值 | 成功 | 失敗 | 是否設置errno |
| 0 | ?1 | 是 | |
說明:tcgetattr函數用于獲取與終端相關的參數。參數fd為終端的文件描述符,返回的結果保存在termios結構體中,該結構體一般包括如下的成員:
tcflag_t c_iflag;?????
tcflag_t c_oflag;?????
tcflag_t c_cflag;?????
tcflag_t c_lflag;????
cc_t???? c_cc[NCCS];
其具體意義如下。
?
c_iflag:輸入模式標志,控制終端輸入方式,具體參數如表6.3所示。
表6.3 c_iflag參數表
| 鍵??? 值 | 說??? 明 |
| IGNBRK | 忽略BREAK鍵輸入 |
| BRKINT | 如果設置了IGNBRK,BREAK鍵的輸入將被忽略,如果設置了BRKINT ,將產生SIGINT中斷 |
| IGNPAR | 忽略奇偶校驗錯誤 |
| PARMRK | 標識奇偶校驗錯誤 |
| INPCK | 允許輸入奇偶校驗 |
| ISTRIP | 去除字符的第8個比特 |
| INLCR | 將輸入的NL(換行)轉換成CR(回車) |
| IGNCR | 忽略輸入的回車 |
| ICRNL | 將輸入的回車轉化成換行(如果IGNCR未設置的情況下) |
| IUCLC | 將輸入的大寫字符轉換成小寫字符(非POSIX) |
| IXON | 允許輸入時對XON/XOFF流進行控制 |
| IXANY | 輸入任何字符將重啟停止的輸出 |
| IXOFF | 允許輸入時對XON/XOFF流進行控制 |
| IMAXBEL | 當輸入隊列滿的時候開始響鈴,Linux在使用該參數而是認為該參數總是已經設置 |
c_oflag:輸出模式標志,控制終端輸出方式,具體參數如表6.4所示。
總結
以上是生活随笔為你收集整理的LINUX 使用tcgetattr函数与tcsetattr函数控制终端一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux Kernel and And
- 下一篇: LINUX使用tcgetattr函数与t