打印机接口脚本
打印机接口脚本是打印服务在每次打印文件时用来管理打印机的程序。 接口脚本初始化打印机、利用它的特定功能、打印文件并报告所有错误。
注意:如果您有一个界面程序,曾在旧版 UNIX 系统的打印服务中使用过,它应该还能工作。 然而,需要注意的是,几个 -o 选项已标准化,并且将被传递到每个接口程序。 这些选项可能干扰您的接口程序使用的类似名称的选项。
打印机接口脚本和打印机型号关联,位于 /etc/lp/model 中。 例如, PostScript 打印机的打印机接口脚本称为 /etc/lp/model/PS。 您也可以创建自己的接口脚本或定制现有的脚本来适应您的需要。 请参阅 创建打印机接口脚本。
接口脚本完成以下任务:
- 初始化打印机端口(计算机和打印机之间的连接)。 standard(/etc/lp/model/standard)接口脚本使用 stty 命令初始化打印机端口。 请参阅 stty 命令以获取更多信息。
- 初始化物理打印机(万一前面打印的文件使打印机处于非正常的状态,就将打印机恢复到正常状态)、设置用户请求的字符间距、行间距、页面大小和字符集。 standard 接口脚本使用 lp.set 命令初始化打印机。 请参阅 lp.set 命令以获取更多信息。
- 如果需要,请打印标题页面。
- 打印请求的文件。 standard 接口脚本调用 lp.cat 命令打印文件。 请参阅 lp.cat 命令以获取更多信息。
- 报告打印服务的所有错误。 标准 接口脚本使用 lp.tell 命令将打印机故障的描述发送到打印服务。 打印服务将该信息作为警告转发给打印管理员。 请参阅 lp.tell 命令以获取更多信息。
打印服务打开打印机端口。 打印服务将打印机端口连接提供给接口脚本作为标准输出,并将打印机设置为接口脚本的控制终端。 在端口发生挂起时,SIGHUP 信号被发送到接口脚本。
很多接口脚本提供特殊选项,用户可以使用带有 -o 选项的 lp 命令来指定这些特殊选项。 请参阅 lp 命令以获取更多信息。
打印服务运行接口脚本将打印作业发送到打印机,如以下示例所示:
/etc/lp/interfaces/printer id user title copies options file1 file2 ...
接口脚本的参数为:
| 项 | 描述信息 |
|---|---|
| 打印机 | 接口脚本的名称(和打印机名称相同)。 |
| 标识 | lp 命令返回的请求标识。 |
| 用户 | 作出请求的用户登录名。 |
| 标题 | 用户指定的可选标题。 |
| 副本 | 用户请求的副本数量。 |
| 选项 | 由用户 (使用 lp -o) 或打印服务 (来自管理员使用 lpadmin 命令指定的缺省值) 指定的空白分隔选项的列表。 请参阅 lp 命令以获取 standard 接口识别的选项列表。 |
| 文件 | 要打印的文件的完整路径名。 |
当接口脚本被调用时:
- 标准输入来自 /dev/null。
- 标准输出定向到打印机端口。
- 标准错误输出定向到一个文件,此文件将显示给提交打印请求的用户。
打印服务将附加的打印机配置信息作为以下 shell 变量传递给接口脚本:
| 项 | 描述信息 |
|---|---|
| 终端 =打印机类型 | 指定打印机类型。 该值用作从扩展 terminfo 数据库中获取打印机能力信息的关键字。 |
| 过滤器 =管道 | 指定用来向打印机发送请求内容的过滤器;过滤器由打印机控制。 |
| CHARSET =字符集 | 指定在打印一个打印请求的内容时使用的字符集。 standard 接口脚本抽取所需的控制序列以从 terminfo 数据库中选择字符集。 |