首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LLDB ioctl问题

LLDB ioctl问题
EN

Stack Overflow用户
提问于 2016-09-01 07:51:53
回答 2查看 161关注 0票数 1

我有一个程序,我在其中使用ioctl(0, TIOCGWINSZ, (struct winsize *))来查找运行该程序的终端窗口的大小。当我在终端中运行它时,它工作得很好,但当我使用LLDB时,ioctl给出的窗口大小为0 x 0。

示例:

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

int main(){
    struct winsize tty_window_size;

    ioctl(STDOUT_FILENO, TIOCGWINSZ, &tty_window_size);

    printf("Rows: %i, Cols: %i\n", tty_window_size.ws_row, tty_window_size.ws_col);

    return 0;
}

终端文字记录:

代码语言:javascript
复制
$ clang test.c
$ ./a.out
Rows: 24, Cols: 80
$ lldb ./a.out
(lldb) target create "./a.out"
Current executable set to './a.out' (x86_64).
(lldb) r
Process 32763 launched: './a.out' (x86_64)
Rows: 0, Cols: 0
Process 32763 exited with status = 0 (0x00000000)

有没有人知道为什么会发生这种情况,或者有办法解决这个问题?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-15 01:53:27

不确定它是否有用,因为它是一个旧帖子。不管怎样..。我遇到了同样的问题,并找到了解决方法。如果标准输出上的ioctl失败,请尝试使用/dev/tty

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

void getTerminalSize(int *row, int *col) {
  struct winsize ws;

  *row = *col = 0;      /* default value (indicates an error) */
  if (!isatty(STDOUT_FILENO)) {
    return;
  }

  ws.ws_row = ws.ws_col = 0;
  if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws) == -1 || ws.ws_row == 0 || ws.ws_col == 0) {
    int fd = open("/dev/tty", O_RDONLY);
    if (fd != -1) {
      ioctl(fd, TIOCGWINSZ, &ws);
      close (fd);
    }
  }
  *row = ws.ws_row;
  *col = ws.ws_col;
}  

int main(){

  int row, col;
  getTerminalSize(&row, &col);
  printf("Row: %i, Col: %i\n", row, col);

  return 0;
}
票数 2
EN

Stack Overflow用户

发布于 2016-09-01 08:18:28

lldb使用pty来处理程序的输入和输出,但它们没有被设置为跟踪lldb的终端大小,这似乎是一个错误。请将其提交到lldb.llvm.org错误跟踪器。

如果你在OS上,你可以在一个单独的终端窗口中运行你的应用程序(如果你想在终端上做任何花哨的事情,这可能就是你想要的),启动它,如下所示:

(lldb)进程启动-tty

我不知道这是否已经在Linux上实现了。

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

https://stackoverflow.com/questions/39260719

复制
相关文章

相似问题

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