User`s guide
3-20
Guide to Printers and Printing
Summary
The Spooler Data Flow Summary figure summarizes the high–level flow of a spooler print
job through the AIX spooler.
qdaemon
piobe
/etc/qconfig
/etc/qconfig.bin
digest
lpq
lpr
lprm
lptest
cancel
disable
enable
lp
lpstat
qadm
qcan
qchk
qpri
qprt
qhld
qmov
BSD
ATT AIXSMIT
enq
calls creates
reads
calls
reads
creates fork() and exec()
shell optional filter pioformat + formatter pioout device
Spooler Data Flow Summary
Front Ends
JDF
driver
The box labeled Front Ends contains the commands, including the smit interface, that users
can use to submit one type of job or another to the spooler. Each of these commands, with
the exception of queues status queries, calls the enq command which creates a job
description file (JDF); the queue status queries call enq but do not create a JDF.
The enq command notifies the qdaemon of the existence of a new JDF. The qdaemon
reads the JDF and begins the process of attempting to acquire all of the resources
necessary to process the job. When the qdaemon has acquired those resources , it uses
the fork() and exec() subroutines to set the queue backend into execution. The qdaemon
passes the backend all of the relevant arguments from the original job submission
command as well as an open file descriptor (from the file parameter in /etc/qconfig) to the
backend.
In the case of a spooler queue where the backend is piobe, piobe uses the name of the
queue to access the virtual printer definition for this queue, determining the full path to all of
the processes that will become the pipeline of filters that actually processes the spooler job.
This pipeline is passed to a shell for realization.
In the case of piobe, the pipeline can begin with an optional pre–filter, such as the pr
command. The output from the pr command becomes the stdin of the formatter driver,
pioformat, which dynamically loads, links, and drives the formatter. The output from
pioformat becomes the stdin of pioout. pioout uses the open file descriptor passed by the
qdaemon to deliver the processed spooler job to the device driver, a character–special file
in the /dev directory. If no pre–filter is specified, pioformat becomes the first process in the
pipeline.