印表機配置FreeBSD是多用戶操作系統,因此可能有多個用戶同時發出打印請求,如果每個請求都直接訪問印表機,那麼 必然就會發生衝突問題。為了使印表機能為所有的用戶服務,FreeBSD使用偽脫機的打印服務方式。在這種方式下,每 個使用FreeBSD的打印用戶並不直接訪問印表機,而是通過一系列偽脫機打印程序來使用印表機。 FreeBSD的打印系統提供了以下功能:
通常用戶使用程序lpr進行打印,但lpr並沒有直接將所有打印的檔案發送到印表機上,而是將其放到打印緩衝 目錄中。通常這個緩衝區在/var/spool目錄下,每個印表機有自己的spool目錄,打印檔案就被放到這裡,存 儲為一個臨時檔案。而系統使用守護進程lpd監視spool目錄,當發現一個緩衝目錄中有需要打印的文檔時,lpd就 復制自身,為這個打印任務產生一個lpd進程,這個進程負責處理這個打印緩衝目錄的文檔,將其發送到這個目錄對應的打 印機中進行打印。由於一個印表機對應一個緩衝目錄,並且由一個lpd進程管理,因此就不會發生多個打印任務同時訪問打 印機,發生資源衝突問題。 在這種打印方式將普通的打印系統分為三個部分:
這種方式雖然與直接訪問印表機相比看起來比較複雜,但是這樣能夠支持多用戶和多印表機﹔而且使用打印緩衝區和 後台打印守護程序使打印工作放到後台進行,用戶不需等待打印結束。此外,這樣也可以使得打印系統可以很好的和網路相結 合,可以通過lpd將打印到其他主機上的打印作業通過網路發送出去,或者監視網路上發送來的打印文檔,將其放入打印緩 沖區中進行處理。 將打印過程分為三個部分的另一個優點是可以使用過濾程序,對放置在打印緩衝區中的打印作業進行處理,這樣可以 完成轉換格式、統計信息等很多功能,充分發揮了易管理的特點。 這種BSD風格的打印系統是FreeBSD預設提供的,為了支持多種印表機,以及支持對中文和圖形的打印,還 需要安裝額外的軟體包。包括ghostscript, psutils, apsfilter, gb2ps等,這些 軟體都通過Packages Collection進行安裝。 為了使用這個打印系統,就必須啟動打印守護進程lpd,rc.conf中有一個選項lpd_enable就用 於這個目的。 |