Linux开发环境及应用·第一周·开始使用Linux(一)

这是中国大学MOOC中的课程:《linux开发环境及应用》的学习笔记……与其说是笔记,不如说是照抄ppt^_^

Linux字符终端

终端(Terminal)

UNIX/Linux是多用户系统

  • 主机连接多台字符终端
  • 字符终端作为交互式输入输出设备

终端的构成

  • 键盘
  • 显示器
  • RS232串行通信接口

字符终端的历史

  • 英文打字机 typewriter
  • 电传打字机 teletypewriter 简写tty
  • 字符终端,以屏幕代替卷纸打印机(同样称为tty设备)

主机与终端的连接

  • 主机中的串口卡(硬件)引出多个RS232串口
  • 每个RS232接口通过电缆连接一台终端
  • RS232电缆的长度限制
    • 早期要求小于10米
    • 现在可达百米

终端与主机的功能分工

终端:主机的输入和输出设备

终端通过电缆把用户的按键信息送到主机,把主机发来的信息在屏幕上显示

主机:程序和数据的存储及处理

数据及程序存放在主机的硬盘上,程序的运行由主机完成


行律与驱动程序

驱动程序
  • 不同的硬件需要不同的驱动程序
  • 与行律模块的接口:上行和下行字符流
行律的作用
  • 一行内字符的缓冲、回显与编辑,直到按下回车键
  • 数据加工,如:将\n转化为\r\n
  • Ctrl-C字符转化为中止进程运行的信号

行律与驱动程序


主机与终端之间的通信

一个程序例子
#include<stdio.h>

int main(void)
{
	int n;

	printf("Input N: ");
	scanf("%d", &n);
	printf("N * N = %d\n", n * n);
	printf("Bye!\n");
}
终端按键

1 7 Backspace 6 Enter

主机与终端之间的通信


行律功能的调整

  • 程序中通过编程的方法
  • 相关命令stty
    • stty erase ^H – 终端默认ctrl + backspace 为删除,这样设置后直接backspace就能删除了。
    • stty -a – 以人可读的方式打印所有当前设置

终端转义序列

转义字符

Esc: ASCII码1B(十进制27,八进制033)

主机发往终端方向数据中的转义序列的功能
  • 控制光标位置、字符颜色、字符大小等等
  • 选择终端的字符集
  • 控制终端上的打印机、刷卡机、磁条器、密码键盘
    举例
  • Esc[2J 由主机送到终端的四字节序列: 1B 5B 32 4A 功能:清除屏幕
  • Esc[8A 四字节序列,光标上移8行
  • Esc[16;8H 七字节序列,光标移动到16行8列
  • Esc[1;31m 七字节序列,红色字符

终端类型

主机根据终端类型,实现相应功能时发送对应的控制码;当终端类型设置不对,可能一些全屏幕操作的软件运行失败


仿真终端和虚拟终端

仿真终端
  • PC机RS232串口,运行终端仿真软件来仿一个真正的终端设备的功能
    例如:早期DOS操作系统下的CrossTalk、Windows中的“超级终端”

仿真的内容包括实现终端的转义码序列功能

虚拟终端
  • 终端与主机之间的通信由串口替代为一个TCP连接,双向传递字节流
  • 主机与PC通过网络相连,客户端运行telnet、服务器端telnetd,成为Linux的基于TCP通信的虚拟终端
  • 安全终端,在TCP连接上加密压缩数据,如:SecureCRT、putty

虚拟终端的字节流