任何类型的调整大小bash事件

时间:2014-06-30 19:07:59

标签: bash

我有一种用“响应式”制作的用户界面。像庄园一样,使用tput在终端底部画一个盒子。

我想知道是否还有它"重绘"终端调整大小时的框?

2 个答案:

答案 0 :(得分:3)

您应该能够使用bash捕获此事件,如下所示:

trap 'do something' SIGWINCH

答案 1 :(得分:2)

是。 ncurses,处理linux中屏幕操作的程序(不是bash!)在窗口大小改变时发出信号:SIGWINCH(窗口大小已更改)。收到此事件时,您将需要处理事件并调用函数来重绘程序,这在实现方面根据您使用的编程语言而有所不同。但是,例如,在C中,它就像是:

#include <signal.h>

void handleResize(int dummy)
{
     // redraw things here
}

int main(...)
{
signal(SIDWINCH, handleResize);
....
}

希望有所帮助!