The printing subsystem of UNIX System V is one of several standardized systems for printing on Unix, and is typical of commercial System V-based Unix versions such as Solaris and SCO OpenServer. A system running this print architecture could traditionally be identified by the use of the user command lp as the primary interface to the print system, as opposed to the BSD command (though some systems provide lpr as an alias to lp).
Typical user commands available to the System V printing system are:
In the Unix programming model, device files are special files that act as access points to peripheral devices such as printers. For example, the first line printer on a Unix system might be represented by a file lp1 in the device (/dev) directory, i.e., /dev/lp1. Using the file metaphor, a document could by printed by "copying" the file onto the device: cp document /dev/lp1. While this worked well enough for the case where there was one printer per user, this model did not scale out well to multiple users having to share one printer. The solution was to create a queue (or "spool") of documents to be printed and use a daemon (system process) to manage this queue and send the documents to the printer in the order in which they arrived.
Such a system, with an lp command to send documents to the queue, was first introduced in 1973 in Version 4 of Unix. By the release of System V Release 4, the suite of utilities had grown to include commands for canceling print jobs, moving jobs among queues, enabling and disabling queues, enabling and disabling a job scheduler daemon, and status reports of the print system. The lp command handled queue documents to be printed and had over 20 different options that controlled the appearance of the document and its place in the queue, and even handled email notification of the user once the document had finished printing. The command returned a "job id" which could be used by the cancel or lpstat commands to remove the job from the queue or check on its progress, respectively. While the system was considered to be quite complex to set up and administer, most uses were expected to only use these three commands.