Linux C获取终端尺寸

文章介绍了如何使用C语言中的ioctl函数结合TIOCGWINSZ命令从stdin获取Linux终端的窗口尺寸,包括宽度、高度、像素等信息,并演示了捕获窗口尺寸变化和在shell环境下获取行数和列数的方法。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yvee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值