2017-07-28 33 views
0

我正在使用github.com/kr/pty包爲我生成的外部進程創建僞TTY。然而,它們的終端尺寸似乎比終端模擬器的窗口尺寸小(即,ncurses和其他終端用戶界面只會在xterm/Konsole的左上角繪製/不管)。設置另一個進程的終端大小(ala`stty columns`)?

我已經提出了一個pty包的錯誤,因爲解決這個問題的想法可能與包本身有關,但是如果我可以自己設置TTY的維度, )。

我該怎麼做呢?

注意該項目是用Go(Golang)編寫的,因此理想情況下我需要在C或Go中這樣做。另外,我正在開發的這個項目非常強調跨平臺兼容性,因此知道所需的任何系統調用是否都是特定操作系統會很方便。

回答

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