无论打印过滤器简单或复杂,都必须满足以下要求:
过滤器应从其标准输入获取文件内容,并将转换后的文件发送到标准输出。
如果程序引用外部文件,则不能将它用作过滤器。可能很想将诸如 troff、nroff 之类的程序或类似的字处理程序用作过滤器。LP 打印服务无法从过滤器程序识别对其他文件的引用(称为包含文件)。由于 troff 和 nroff 程序允许包含文件,因此它们在用作过滤器时可能会失败。如果程序需要其他文件才能完成其处理,则不应将该程序用作过滤器。
过滤器不应依赖于用户通常无法访问的文件。如果过滤器在由用户直接运行时失败,则它在由 LP 打印服务运行时也将失败。
慢速过滤器可以将有关文件中错误的消息发送到标准错误。快速过滤器则不会发送。收集慢速过滤器中的错误消息,并将其发送给提交打印请求的用户。
如果慢速过滤器由于收到信号而停止,则停止打印请求,并通知提交请求的用户。同样,如果慢速过滤器以非零退出代码退出,则停止打印请求并通知用户。快速过滤器的退出代码的处理方式不同。
如果希望过滤器检测打印机故障,则还应该满足以下要求:
如果可能,过滤器应先等待清除故障再退出。清除故障后,过滤器还应在打印停止时所在页的顶部继续打印。如果不希望使用延续功能,则 LP 打印服务将在向管理员报警之前停止过滤器。
识别出故障后,过滤器立即应将打印机故障消息发送到其标准错误。过滤器不必退出,但是可以等待清除故障。
过滤器不该将有关文件中错误的消息发送到标准错误。这些消息应包括在用户可从中进行读取的标准输出中。
如果文件已完成打印(即使文件中的错误阻止它正确打印),则过滤器应以零退出代码退出。
仅当打印机故障阻止了过滤器完成打印请求时,过滤器才应以非零退出代码退出。
在添加到过滤器表时,必须将过滤器作为快速过滤器添加。