进程置于后台然后再置于前台时,terminal状态如何保存/恢复? 我正在阅读https://www.gnu.org/software/libc/manual/html_node/Foreground-and-Background.html这给了我一个想法,tcgetattr / tcsetattr负责这个,但参数像游标configuration,备用(杯)模式不放在termios结构中。 我设法用简单的testing代码来validation:
struct termios t; tcgetattr( 0, &t); // change something tcsetattr(0, TCSANOW, &t);
或者用SIGCONT信号放在前台处理重绘terminal本身? 我试图手动发送到一些程序,但不能确定是否重新绘制。
tcgetattr()
和tcsetattr()
函数获取和设置终端设备的状态。 这包括波特率,本地回声,控制字符转换为信号等选项。 它不包括远程终端上的终端仿真器(或可能是物理终端!)的状态。
一般来说,大部分修改终端状态的应用程序,它们会干扰外壳,将捕获^ Z和重置终端的状态,然后再自己背景。 此外,大多数shell将在打印提示时重置光标的笔颜色和位置。 综合起来,这两个因素就足够了,内核不需要介入。