首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ws_xpixel和ws_ypixel

ws_xpixel和ws_ypixel
EN

Stack Overflow用户
提问于 2017-03-22 03:52:49
回答 2查看 415关注 0票数 2

下面是我用来打印当前终端像素分辨率的代码。

代码语言:javascript
复制
#include <sys/ioctl.h>
#include <stdio.h>
#include <unistd.h>

int main (int argc, char *argv[]) {

    struct winsize ww;
    ioctl(STDOUT_FILENO, TIOCGWINSZ, &ww);
    printf ("x-pixels %d\n", ww.ws_xpixel);
    printf ("y-pixels %d\n", ww.ws_ypixel);
    return 0;
}

我使用this作为winsize引用。但是代码只打印零。如果我使用ws_colws_row,它工作得很好。

请帮帮忙,谢谢!

EN

回答 2

Stack Overflow用户

发布于 2017-03-22 04:12:41

如果您查看source code of glibc,您将看到ws_colws_row 实际上并未使用

代码语言:javascript
复制
/* Type of ARG for TIOCGWINSZ and TIOCSWINSZ requests.  */
struct winsize
{
  unsigned short int ws_row;    /* Rows, in characters.  */
  unsigned short int ws_col;    /* Columns, in characters.  */

  /* These are not actually used.  */
  unsigned short int ws_xpixel; /* Horizontal pixels.  */
  unsigned short int ws_ypixel; /* Vertical pixels.  */
};

附言:如果你不确定我为什么要指向glibc,也可以阅读这个answer

票数 1
EN

Stack Overflow用户

发布于 2017-05-13 06:42:50

这两个值由一些终端仿真器设置。

请参阅VTE feature request to set these fields,其中总结了我最近的发现。(VTE是gnome-terminal和许多其他终端仿真部件背后的实际终端仿真部件。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42936926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档