簡體   English   中英

Shell如何在作業控制上恢復終端參數?

[英]How are terminal parameters restored by the shell on job control?

將進程置於后台然后再次置於前台時,如何保存/恢復終端狀態? 我正在閱讀https://www.gnu.org/software/libc/manual/html_node/Foreground-and-Background.html ,這讓我知道tcgetattr / tcsetattr對此負責,但是像游標配置這樣的參數要交替使用( cup)模式不放在termios結構中。 我設法用簡單的測試代碼驗證了這一點:

struct termios t;
tcgetattr( 0, &t);
// change something
tcsetattr(0, TCSANOW, &t);

還是用SIGCONT信號將進程置於前台后重繪終端本身? 我嘗試將其手動發送到某些程序,但無法真正判斷它是否已重新繪制。

tcgetattr()tcsetattr()函數獲取並設置終端設備的狀態。 這包括波特率,本地回聲以及將控制字符轉換為信號之類的選項。 它不包括遠程終端上的終端仿真器(或物理終端!)的狀態。

一般而言,大多數對終端狀態進行足夠多修改以至於它們會干擾shell的應用程序都會捕獲^ Z並在使自己進入后台之前重置終端的狀態。 此外,大多數外殼將在打印提示時重置光標的筆顏色和位置。 結合起來,這兩個因素就足以使內核不必參與。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM