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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!