Datenfluss am Druckausgabeprogramm
Der primäre Zweck eines Back-Ends besteht darin, Zeichen an eine Einheit, normalerweise einen Drucker, zu senden.
Das Druckausgabeprogramm wird einmal für jede zu druckende Datei oder Dateigruppe aufgerufen, wobei der Name jeder Datei als Parameter an das Ausgabeprogramm übergeben wird. Das Back-End öffnet die Datei, liest sie und sendet sie an das Gerät. Die empfohlene Methode für einen Back-End-Betrieb besteht darin, in die Standardausgabe zu schreiben, wobei der qdaemon -Prozess die Einheit im richtigen Dateideskriptor öffnet. Dazu muss das Feld file in der Datei qconfig festgelegt werden.
Der Name der zu druckenden Datei kann ein direkter oder relativer Pfadname sein. Die Benutzer-ID und die Gruppen-ID des Back-Ends sind die des Prozesses, der den Befehl enq aufgerufen hat.
Wenn ein Back-End aufgerufen wird, hat es Zugriff auf die Umgebung des Benutzers. Für den Zugriff auf die Benutzerumgebung kann das Back-End die Subroutine getenv aufrufen (weitere Informationen finden Sie in der Subroutine getenv ). Um beispielsweise auf das Verzeichnis des Benutzers zuzugreifen, gibt getenv(PWD) einen Zeiger auf den Verzeichnisnamen zurück. Das Back-End kann dies verwenden, um aus diesem Verzeichnis zu lesen oder in dieses Verzeichnis zu schreiben.
Wenn das Back-End in seine Standardausgabe schreibt, öffnet qdaemon die Einheit im Rootbenutzermodus. Wenn das Back-End das Gerät selbst öffnen muss, muss es über die richtigen Berechtigungen zum Öffnen des Geräts verfügen. Da das Back-End unter den Berechtigungen des Benutzers ausgeführt wird, der den Druckjob sendet, müssen Sie möglicherweise den Zugriffsschutz auf dem Gerät ändern oder die Back-End-Set-Benutzer-ID oder Set-Gruppen-ID installieren.
Standardmäßig sind stdin, stdout und stderr für die Nulleinheit (/dev/null) geöffnet, obwohl es möglich ist, die Einstellung von stdout (und möglicherweise stdin) mit den Feldern file und access in der Datei qconfig zu überschreiben.