


























lz 的疑点是不是主要在分配或者不分配伪终端的区别,什么是伪终端上面?
这几个命令可以看到区别:
a1. `ssh -t $host 'ls -l /proc/self/fd/'`
lrwx------ 1 xxx xxx 64 May 3 09:30 0 -> /dev/pts/6
lrwx------ 1 xxx xxx 64 May 3 09:30 1 -> /dev/pts/6
lrwx------ 1 xxx xxx 64 May 3 09:30 2 -> /dev/pts/6
a2. `ssh $host 'ls -l /proc/self/fd/'`
lr-x------ 1 xxx xxx 64 May 3 09:31 0 -> pipe:[17376416]
l-wx------ 1 xxx xxx 64 May 3 09:31 1 -> pipe:[17376417]
l-wx------ 1 xxx xxx 64 May 3 09:31 2 -> pipe:[17376418]
分配伪终端的时候,标入 /标出是 pts 伪终端设备; 不分配的时候,就是个管道
b1. `ssh -t $host 'python -c "import os; print(os.get_terminal_size())"'`
os.terminal_size(columns=197, lines=49)
Connection to lo closed.
b2. `ssh $host 'python -c "import os; print(os.get_terminal_size())"' `
Traceback (most recent call last):
File "<string>", line 1, in <module>
OSError: [Errno 25] Inappropriate ioctl for device
使用 python 的 `os.get_terminal_size` 函数获取终端尺寸
分配终端的时候,标准输入 /输出的终端,有物理尺寸(上面例子是 49 行,197 列)也就是跟客户端的这个模拟终端的串口尺寸是物理相关的;
不分配终端的话,标入 /标出就是一个普通的流数据,可以入 /可以出,但是 **没有尺寸**
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。