Linux C获取终端尺寸

2024-01-07 20:32:18

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

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

测试代码

#include <stdio.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <signal.h>

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 <stdio.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <signal.h>

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列数

文章来源:https://blog.csdn.net/yses000/article/details/135373463
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。