我使用的下一個來改變終端尺寸:
rc = ioctl(fd, TIOCSWINSZ, &ws);
當運行此linux下文本終端(由Alt鍵-CTRL-F1切換),結果是我期望看到。整個我的輸入和輸出在由ioctl syscall給出的範圍內。
但是,當我通過SSH連接到本地主機,並運行相同的程序,它只能部分工作。我的意思是我不能輸入比由ioctl設置的終端大小更寬的命令,但是輸出可以跨越由ioctl給出的終端的邊界,並且輸入可以採用由ioctl設置的更多行。此後也沒有自動回車和換行。
我直接運行程序時看到的唯一區別是它在終端/ dev/ttyN上運行,它的主數字是5,當我通過SSH運行程序時,它使用/ dev/pts/N作爲終端,號碼136. 所以,據我瞭解,這是由於終端的差異。我的問題:
1.是對的嗎?終端驅動程序中的原因是什麼?
2.我該如何解決?我需要像本地tty終端一樣通過SSH的行爲。
謝謝!無法在PTY改變終端尺寸/ N(適用於ttyN)
3
A
回答
6
通常TIOCSWINSZ
被tty主控(例如xterm
,Linux控制檯本身等等)用來告訴內核驅動程序終端實際上有多大。運行在tty從站(即應用程序本身)上的程序使用TIOCGWINSZ
來查詢終端的大小。大多數tty司機不支持以其他方式推動它;通常不能在應用程序的tty slave上調用TIOCSWINSZ
,並讓主設備更改其大小。
某些終端(例如xterm
)確實支持轉義序列以請求它們調整大小,但這只是一個字節轉義序列,而不是ioctl()
命令。
如果你想要應用程序強制終端的大小,那麼可移植的是沒有辦法做到這一點。不可思議的是,你可以應用一些特殊的技巧,例如嘗試TIOCSWINSZ
或發送xterm
轉義序列。
相關問題
- 1. 使用適用於:尺寸
- 2. 無法打開終端 - java.io.IOException:無法創建PTY「
- 3. 無法控制終端從xterm中使用gnome-終端改變
- 4. 如何獲取終端尺寸?
- 5. 適用於所有屏幕尺寸的Android圖形尺寸
- 6. 如何從終端獲取CSV尺寸
- 7. SearchController改變tableView的尺寸
- 8. Rails適用於0尺寸的關聯
- 9. 適用於多種尺寸的Android SVG?
- 10. 我無法找到改變畫布尺寸的方法
- 11. 改變光標尺寸
- 12. 無法更改元素的尺寸
- 13. 改變尺寸<input>
- 14. css:如何改變尺寸才能使尺寸變大?
- 15. JButton不改變尺寸
- 16. Image.thumbnail - 無法正確更改尺寸
- 17. 我無法更改小部件尺寸
- 18. 我無法更改我的Favicon尺寸
- 19. 尺寸圖像以適合WebView尺寸
- 20. 更改尺寸
- 21. 屏幕尺寸的更改菜單對div無效,但不適用於
- 22. 如何使用AxesGrid改變尺寸軸
- 23. 如何改變軸的尺寸在Matlab
- 24. 在matlab中改變單元尺寸
- 25. 改變字符串的尺寸在C#
- 26. Capistrano的僞終端(PTY)不工作
- 27. Android - 適用於多種屏幕尺寸的圖像的正確尺寸
- 28. 無法檢索pagePathLevel1尺寸
- 29. 尺寸變化
- 30. TYPO3 8.7 - FSC庫:改變行/列尺寸
所以,回到我的問題: 1.通常是的。司機的原因。因爲不是所有的驅動程序都允許將從終端大小推到主機。 2.沒有可移植的方式。我可以嘗試使用ioctl和轉義序列。 是否正確?謝謝! – van 2012-07-15 20:13:50
我的經驗(此評論之前幾分鐘)是xterm不支持vt100「 [8; ; t」轉義序列,但是gnome-terminal沒有。所以一般來說,這似乎不是您可以依賴的功能。 –
2016-05-11 05:36:14