For background on CUPS labeled printing, please see: http://free.linux.hp.com/~mra/docs/.
CUPS uses the Internet Printing Protocol (IPP) that was designed to replace the Line Printer Daemon (LPD) protocol, as a basis for managing print jobs. CUPS also supports LPD, Server Message Block (SMB), and AppSocket protocols with reduced functionality. CUPS controls access to printers via its configuration file. For an overview of CUPS, refer to http://www.cups.org/documentation.php/overview.html or http://en.wikipedia.org/wiki/Common_Unix_Printing_System. For further information, refer to
5.12.4.1cupsd
The cupsd daemon is the CUPS print server. It accepts local and remote print jobs, performs transformations on the data, and sends the final data to a printer. Daemon management is restricted to administrative users. Jobs are accepted only if they pass both CUPS access checks.
The cupsd daemon typically follows these processing steps:
1.Processes command line arguments.
2.Sets up signal handlers.
3.Forks a child.
4.The parent waits for the child to complete initialization (SIGUSR1) or die trying (SIGCHLD) and exits.
5.The child changes its working directory to /.
6.Disables core dumps.
7.Disconnects from the controlling terminal by running in a new session.
8.Closes all files.
9.Gets an audit file descriptor.
10.Sets the timezone.
11.Sets the locale.
12.Sets the resource limit for the maximum number of files.
13.Allocates memory for select() file descriptor sets.
14.Reads its configuration file.
15.Starts the server.
16.Sets up signal handlers.
17.Initializes authentication certificates.
18.Sends a SIGUSR1 to the parent process so the parent can exit.
19.Starts any pending jobs.
20.Reaps dead children.
21.Closes idle clients.
22.Checks for new jobs.
23.Restarts the server if there are no active clients or jobs, or the reload timeout has been reached – this causes cupd to stop the server, reread the configuration file, and restart the server.
193