我正在使用github.com/kr/pty
包为我产生的外部进程创建伪TTY。但是它们的终端大小似乎小于终端仿真器窗口大小(即ncurses和其他终端UI只会在xterm / Konsole /的左上角绘制)。
我已经提出了pty包的一个错误,因为解决这个问题的想法是使用包本身,但是如果我可以自己设置TTY的维度(在代码中),那么解决它可能会很方便
我将如何做到这一点?
注意:该项目是用Go(Golang)编写的,所以理想情况下我需要在C或Go中做这方面的建议。此外,我正在研究的项目非常强调跨平台兼容性,因此了解所需的系统调用是否特定于操作系统将非常方便。
答案 0 :(得分:0)
我找到了解决方案。原来创建一个新的伪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