Linux C获取终端尺寸

可用ioctl读取winsize结构。
结构定义

struct winsize {
	unsigned short ws_row;
  	unsigned short ws_col;
  	unsigned short ws_xpixel;
  	unsigned short ws_ypixel;
  	};

测试代码

#include 
#include 
#include 
#include 

int main()
{
       struct winsize sz; 
       ioctl(STDIN_FILENO, TIOCGWINSZ, &sz);
       printf("width %d height %d xpixels %d ypixels %d\n",·
       sz.ws_col,sz.ws_row,sz.ws_xpixel,sz.ws_ypixel);                                                             
       return 0;
}

捕获尺寸变动

#include 
#include 
#include 
#include 

void szchange(int signum)
{
        struct winsize sz;
        ioctl(STDIN_FILENO, TIOCGWINSZ, &sz);
        printf("width %d height %d\n", sz.ws_col,sz.ws_row);    
}
int main()
{
        signal(SIGWINCH,szchange);
        while(1)
                sleep(1);
        return 0;
}

shell 下 获取

echo  $LINES $COLUMNS

$LINES 行数 $COLUMNS列数

你可能感兴趣的:(linux,c语言,运维)