命令行多终端方案
- 终端分屏
- 会话保持
- 会话独立于终端存在
- SSH 时不因断线而停止程序
-v-
### 终端复用器 tmux
tmux 由会话(session),窗口(window),面板(pane)组织起每个 shell 的输入框。
- 会话用于区分不同的工作
- 窗口是会话中以显示屏为单位的不同的页
- 面板是一个窗口上被白线分割的不同区域
该窗口不因断开连接或者暂时登出而消失,而是会保存在后台,下一次登录时可以立即还原。
-v-
### 终端复用器 tmux
前缀:`Ctrl + B`
| 默认快捷键 | 功能 |
| :--------- | :--------------------------------- |
| `%` | 左右分屏 |
| `"` | 上下分屏 |
| `↑ ↓ ← →` | 焦点切换为上、下、左、右侧 pane |
| `d` | 从 tmux 中脱离,回到命令行界面 |
| `z` | 将 pane 暂时全屏,再按一次恢复原状 |
| `c` | 新建窗口 |
| `,` | 为窗口命名 |
| `s` | 列出所有 session |
-v-
### 实践
`src/lec3/signal/loop.py`
- 查询到它的 PID,并尝试 `kill` 它
- 它按 `Ctrl + C` 不会退出,这是怎么做到的?
- 尝试让它被 `kill` 也不会退出
- 尝试让它被 `kill -9` 也不会退出
- 尝试让它在终端退出时不会退出
- 可有多种方法
---
## Part 2. I/O
-v-
### 文件描述符
文件描述符是一个非负整数,代表已打开的 I/O 资源(文件、管道、socket、设备等)。
- 查看文件描述符表:`ls -la /proc/