linux终端显示长度,动态获得Linux终端的大小(尺寸)

  • Post author:
  • Post category:linux


类Unix系统提供一个信号-SIGWINCH,每当终端窗口的大小变化时,就会产生此信号。

示例如下:

#include

#include

#include

#include

#include

#include

#include

#include “errno.h”

static int get_screen_width(int *pColum)

{//get terminal’s width

struct winsize size;

if(isatty(STDOUT_FILENO)==0)

{

printf(“not a tty\n”);

return -1;

}

if(ioctl(STDOUT_FILENO, TIOCGWINSZ, &size)<0)

{

printf(“get win size failed: %s\n”, strerror(errno));

return -1;

}

*pColum = size.ws_col;

return 0;

}

static void sig_winch(int signo)

{

int colum_width = 0;

if (get_screen_width(&colum_width) == 0)

{

printf(“SIGWINCH received: terminal width: %d\n”, colum_width);

}

else

{

printf(“SIGWINCH received\n”);

}

if(signal(SIGWINCH, sig_winch) == SIG_ERR)

perror(“signal error”);

return ;

}

int main(void)

{

if(signal(SIGWINCH, sig_winch) == SIG_ERR)

perror(“signal error”);

while (1);

return 0;

}

运行上面示例:当手动改变终端窗口的大小时,当前终端的大小就会显示出来