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