gpt4 book ai didi

go - 设置另一个进程的终端大小(ala `stty columns`)?

转载 作者:数据小太阳 更新时间:2023-10-29 03:24:37 25 4
gpt4 key购买 nike

我正在使用 github.com/kr/pty 包为我产生的外部进程创建伪 TTY。然而,它们的终端大小似乎小于终端仿真器窗口大小(即 ncurses 和其他终端 UI 只会在 xterm/Konsole/其他任何东西的左上角绘制)。

我已经提出了 pty 包的一个错误,因为解决这个问题的想法是使用包本身,但是如果我可以自己设置 TTY 的尺寸(在代码中)作为解决方法可能会很方便.

我该怎么做?

注意该项目是用 Go (Golang) 编写的,因此理想情况下,我需要有关使用 C 或 Go 执行此操作的建议。此外,我正在从事的项目非常强调跨平台兼容性,因此了解所需的任何系统调用是否特定于操作系统会很方便。

最佳答案

我找到了解决方案。结果证明创建一个新的伪 TTY 是错误的方法,我实际上可以使用标准的 Go 库来实现我想要的:

cmd := exec.Command(name, parameters...)

cmd.SysProcAttr = &syscall.SysProcAttr{
Ctty: int(os.Stdout.Fd()) // set the TTY
}

// These must be the respective Std os.File as using a Reader/Writer
// wouldn't work if you're trying to assign a TTY to your terminal
// emulator.
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr

关于go - 设置另一个进程的终端大小(ala `stty columns`)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45372101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com