我一直在试图编写一个程序,并为所说的程序,我需要的终端窗口的大小;但是我有一些麻烦,这是发生了什么。我用一个函数来获取与ioctl
终端的大小和它返回一个使用winsize结构,但返回的结构是这样的: (ws_row = 0, ws_col = 0, ws_xpixel = 0, ws_ypixel = 0)
ioctl正在返回一个空的winsize结构
然而,当我这样做: printf("Screen Width: %d", win.ws_col);
它确实成功打印出终端尺寸。即使这些值是0。我对获得结构代码如下:
/*
* Creates a winsize struct with the screen dimensions
*/
struct winsize get_screen_dimensions()
{
struct winsize wbuf;
if (ioctl(0, TIOCGWINSZ, &wbuf) != -1)
{
return wbuf;
}
return wbuf;
}
用法如下所示打印值时,请记住打印无法在LLDB但打印正确的值,这些值都为0:
struct winsize win = get_screen_dimensions();
printf("Screen Width: %d", win.ws_col);
其他用途,如下所示:
struct winsize winset = get_screen_dimensions();
unsigned short scrnwdth = winset.ws_col;
在这种情况下,在LLDB,scrnwdth是0为好。我真的难倒了...我运行的操作系统是Mac OS X El Capitan 10.11。我在Debian中试过,并得到相同的结果。
我在调试使用lldb的程序时看到相同的问题。我认为这个问题不是很清楚,你应该重新格式化它,提供一个可重现的例子和失败运行的实际输出。也就更清楚了,这个问题只在lldb中放入了一个lldb标签。 – anddam