跳到主要内容

中断字符

必须为网络确立一种处理中断字符的标准方式, 并将其纳入协议。中断字符的问题出现在若干情形中。首先, 中断字符有两种截然不同的用途。一种是作为紧急按钮。它表示: “我不在乎现在发生什么, 立即停止并让我回到监控程序层。” 该命令一收到就立即执行, 最常用于脱离一个用户不想停留的程序(例如陷入无限循环的程序, 等等)。

另一种用途是从某个子系统退出, 或者在具有 fork 结构的机器上作为返回上一层 fork 的方法。第二种用途不是立即生效的, 因为用户希望系统在退出之前完成他交代的所有事情。

我们假定并非每个系统都同时具备 1) 执行上述每种功能的方法, 或 2) 对两者的调用与操作的清晰区分。此外, 各系统处理这些命令的方式还有微妙的差别。

紧急按钮功能可以很容易地由所提议的控制命令 <INT> 来完成。该功能必须借助控制命令来实现, 因为程序可能进入不接受任何输入的状态: 因此无法通过沿电传打字机链路发送消息来中止该程序。不必担心沿控制链路发送该命令所引发的竞争条件, 因为它的全部目的就是迫使机器忽略用户发送的其他一切内容。

在我们的实现中, 我们会要求用户向记录器指定一个很少使用的字符, 作为他的外部紧急按钮。这样, 发送方只需把这个字符映射为 <INT> 命令, 而外部机器必须正确解释它。这一方案对大多数机器都适用, 但有些机器也许适合用不同的方式生成 <INT>。

另一个问题是, 如果外部机器的 “退出” 字符与本地机器相同该怎么办。问题在于, 用户在与外部机器对话时, 希望处于透明模式, 即他输入的一切都直接发送到对方机器。他要脱离这种模式, 就得输入本机的 “退出” 字符或紧急按钮。因此, 如果外部机器有同一个字符, 就无法把它发送出去。解决办法与上面相同 —— 只是把另一个很少使用的字符映射为外部机器的 “退出” 字符。这种映射可以根据各站点的需要做到任意程度。把翻译的完全控制权交给用户是有益的, 因为这使他能够使用自己的电传打字机无法生成的字符。