POSIX linux 終端 串列埠 介面設定

2021-05-23 16:54:25 字數 4810 閱讀 1769

posix終端介面

大多數系統都支援posix終端介面,posix終端通過乙個termios結構來進行控制,該結構定義在termios.h檔案中。

termios結構

struct termios

;c_iflag成員

flag description

gnbrk 忽略輸入中的break狀態

brkint 如果設定了ignbrk,將忽略break。如果沒有設定,但是設定了brkint,那麼break將使得輸入和輸出佇列被重新整理,如果終端是乙個前台程序 組的控制終端,這個程序組中所有程序將收到sigint訊號。如果既未設定ignbrk也未設定brkint,break將視為nul同義字元,除非設定 了parmrk,這種情況下被視為序列/377/0/0

ignpar 忽略楨錯誤和奇偶校驗錯誤

parmrk 如果沒有設定ignpar,在有奇偶校驗錯誤或者楨錯誤的字元前插入/377/0。如果既沒有設定ignpar也沒有設定parmrk,將所有奇偶校驗錯誤或者楨錯誤的字元視為/0。

inpck 啟用輸入奇偶校驗檢測。

istrip 去掉第八位。

inlcr 將輸入的nl翻譯為cr。

igncr 忽略輸入中的回車。

icrnl 將輸入中的回車翻譯為新行字元(除非設定了igncr)。

iuclc (不屬於posix)將輸入中的大寫字母對映為小寫字母。

ixon 啟用輸出的xon/xoff流控制

ixany (不屬於posix。1;xsi)允許任何字元來重新開始輸出。

ixoff 啟用輸入的xon/xoff流控制

imaxbel (不屬於posix)當輸入佇列滿時響鈴。linux沒有實現該位,總是將其視為已設定。

c_oflag成員

flag description

opost 啟用具體實現自行定義的輸出。

olcuc (不屬於posix)將輸出中的小寫字母對映為大寫字母。

onlcr (xsi)將輸出中的新行符對映為回車-換行

ocrnl 將輸出中的回車對映為新行符。

onocr 不在第0列輸出回車。

onlret 不輸出回車。

ofill 傳送填充字元作為延時。

ofdel (不屬於posix)填充字元是ascii del(0177)。如果不設定填充字元則是ascii nul。

nldly 新行延時掩碼。取值為nl0和nl1。

crdly 回車延時掩碼。取值為cr0,cr1,cr2或cr3。

tabdly 水平跳格延時掩碼。取值為tab0,tab1,tab2,tab3(或xtabs)。取值為tab3,即xtabs,將擴充套件跳格為空格(每個跳格符填充8個空格)。

bsdly 回車延時掩碼。取值為bs0或bs1.(從來沒有被實現)

vtdly 豎直跳格掩碼。取值為vt0或vt1。

ffdly 進表延時掩碼。取值為ff0或者ff1。 

c_cflag成員

flag description

cbaud (不屬於posix)波特率掩碼(4+1位)。

cbaudex (不屬於posix)擴充套件的波特率掩碼(1位),包含在cbaud中。

csize 字元長度掩碼。取值為cs5,cs6,cs7或cs8。

cstopb 設定兩個停止位。

cread 開啟接受者。

parenb 允許輸出產生奇偶資訊以及輸入的奇偶校驗。

parodd 輸入和輸出是奇校驗

hupcl 在最後乙個程序關閉裝置後,降低modem控制線(結束通話)。

clocal 忽略modem控制線。

loblk (不屬於posix)從非當前shell層阻塞輸出(用於sh1)。

cibaud (不屬於posix)輸入速度的掩碼。cibaud各位的值與cbaud各位相同,左移了ibshift位。

crtscts (不屬於posix)啟用rts/cts(硬體)控制流。

c_lflag成員

flag description

isig 當接收到字元intr,quit,susp或dsusp時,產生相應的訊號。

xcase (不屬於posix;linux下不支援)如果同時設定了icanon,終端只有大寫。輸入被轉換為小寫,除了以/字首的字元。輸出時,大寫字元被字首/,小寫字元被轉換成大寫。

echo 回顯輸入字元。

echoe 如果同時設定了icanon,字元erase擦除前乙個輸入字元,werase擦除前乙個詞。

echok 如果同時設定了icanon,字元kill刪除當前行。

echonl 如果同時設定了icanon,回顯字元nl,即使沒有設定echo。

echoctl (不屬於posix)如果同時設定了echo,除了tab,nl,start和stop之外的ascii控制訊號被回顯為^x,這裡x是比控制訊號大0x40的ascii碼。例如字元0x08(bs)被回顯為^h。

echoprt (不屬於posix)如果同時設定了icanon和iecho,字元在刪除的同時被列印。

echoke (不屬於posix)如果同時設定了icanon,回顯kill時將刪除一行中的每個字元,如同指定了echoe和echorpt一樣。

defecho (不屬於posix)只在乙個程序讀的時候回顯。

flusho (不屬於posix;linux不支援)輸出被重新整理。這個標誌可以通過鍵入字元discard來開啟和關閉。

noflsh 禁止產生sigint,sigquit和sigsusp訊號時重新整理輸入和輸出佇列。

tostop 向試圖寫控制終端的後台程序組傳送sigttou訊號。

pendin (不屬於posix;linux不支援)在讀入乙個字元時,輸入佇列中的所有字元被重新輸出。(bash用他來處理typeahead)。

iexten 啟用實現自定義的輸入處理。這個標誌必須與icanon同時使用,才能解釋特殊字元eol2,lnext,reprint和werase,iuclc標誌才有效。 

c_cc陣列成員

flag description

vintr (003,etx,ctrl-c,or also 0177, del, rubout)中斷字元。傳送sigint訊號。當設定isig時可被識別,不再作為輸入傳遞。

vquit (034,fs,ctrl-/)退出字元。發出sigquit訊號。當設定isig時可被識別,不再作為輸入傳遞。

verase (0177, del, rubout, or 010, bs, ctrl-h, or also #) 刪除字元。刪除上乙個還沒有刪掉的字元,但不刪除上乙個 eof 或行首。當設定 icanon 時可被識別,不再作為輸入傳遞。

vkill (025, nak, ctrl-u, or ctrl-x, or also @) 終止字元。刪除自上乙個 eof 或行首以來的輸入。當設定 icanon 時可被識別,不再作為輸入傳遞。

veof (004, eot, ctrl-d) 檔案尾字元。更精確地說,這個字元使得 tty 緩衝中的內容被送到等待輸入的使用者程式中,而不必等到 eol。如果它是一行的第乙個字元,那麼使用者程式的 read() 將返回 0,指示讀到了 eof。當設定 icanon 時可被識別,不再作為輸入傳遞。

vmin 非 canonical 模式讀的最小字元數。 veol (0, nul) 附加的行尾字元。當設定 icanon 時可被識別。 vtime 非 canonical 模式讀時的延時,以十分之一秒為單位。 veol2 (not in posix; 0, nul) 另乙個行尾字元。當設定 icanon 時可被識別。

veol (0, nul) 附加的行尾字元。當設定 icanon 時可被識別。

vtime 非 canonical 模式讀時的延時,以十分之一秒為單位。

veol2 (not in posix; 0, nul) 另乙個行尾字元。當設定 icanon 時可被識別。

vswtch (not in posix; not supported under linux; 0, nul) 開關字元。(只為 shl 所用。)

vstart (021, dc1, ctrl-q) 開始字元。重新開始被 stop 字元中止的輸出。當設定 ixon 時可被識別,不再作為輸入傳遞。

vstop (023, dc3, ctrl-s) 停止字元。停止輸出,直到鍵入 start 字元。當設定 ixon 時可被識別,不再作為輸入傳遞。

vsusp (032, sub, ctrl-z) 掛起字元。傳送 sigtstp 訊號。當設定 isig 時可被識別,不再作為輸入傳遞。

vdsusp (not in posix; not supported under linux; 031, em, ctrl-y) 延時掛起訊號。當使用者程式讀到這個字元時,傳送 sigtstp 訊號。當設定 iexten 和 isig,並且系統支援作業管理時可被識別,不再作為輸入傳遞。

vlnext (not in posix; 026, syn, ctrl-v) 字面上的下乙個。引用下乙個輸入字元,取消它的任何特殊含義。當設定 iexten 時可被識別,不再作為輸入傳遞。

vwerase (not in posix; 027, etb, ctrl-w) 刪除詞。當設定 icanon 和 iexten 時可被識別,不再作為輸入傳遞。

vreprint (not in posix; 022, dc2, ctrl-r) 重新輸出未讀的字元。當設定 icanon 和 iexten 時可被識別,不再作為輸入傳遞。

vdiscard (not in posix; not supported under linux; 017, si, ctrl-o) 開關:開始/結束丟棄未完成的輸出。當設定 iexten 時可被識別,不再作為輸入傳遞。

vstatus (not in posix; not supported under linux; status request: 024, dc4, ctrl-t).

mac os x 串列埠終端完整手冊

作為乙個手機應用和嵌入式軟體開發者,我經常會在mac os x 通過串列埠操作開發板。商業版串列埠終端沒用過,最早用的是圖形介面zterm,但是這個讓人迷惑,經常找不到配置串列埠引數在 而且經常出錯。最後轉向用mac os x 的gnu screen 開啟終端很簡單 screen dev tty.u...

archlinux安裝串列埠終端ckermit

1.將usb轉串列埠連線到pc上。通過dmesg命令可以檢視usb轉串列埠是否被pc識別。顯示 attachec to ttyusb0即被識別。linux系統一般有usb轉串列埠驅動 pl2303 不用安裝。2.安裝ckermit。guo archlinux sudo pacman s ckermi...

通過串列埠配置OpenSolaris網路介面

這兩天一直在為安裝opensolaris而奮鬥。首先嘗試在xvm虛擬機器裡面安裝,嘗試了osol build 124,125,126。一直存在乙個問題,那就是如果改變了network physics service並重起系統後,user home所在的zfs無法mount。今天嘗試在xvm中安裝op...