LPD(8) | System Manager's Manual | LPD(8) |
lpd
—
ラインプリンタ
スプーラー
デーモン
lpd
[-l
]
lpd
は、ラインプリンタデーモン
(スプール領域ハンドラー)
であり、起動時に
rc(8)
ファイルから呼び出されるのが普通である。
これは、 printcap(5)
ファイルをひととおり調べてプリンタ情報を入手し、クラッシュ後に残されていた
ファイルがあればそれらをすべて印刷する。そして、システムコール
listen(2) 及び accept(2)
を利用して、キュー内にあるファイルの印刷要求受付、
スプール領域へのファイル転送、キューの表示、
ならびにキュー内のジョブの削除を行なう。
いずれの場合も、子プロセスをフォーク(fork)して要求を処理し、
親プロセスは引き続いて他の要求を受け入れれるようにしている。
オプション :
アクセス制御には
2
つの方法がある。まず
1 つ目は、 /etc/hosts.equiv
若しくは /etc/hosts.lpd
ファイルに列挙されているマシンからの要求のみを受け付けるというものである。
2 つ目の方法は、もし
rs
がアクセスされようとしているプリンタの
printcap
エントリに指定してあれば、
そのプリンタが接続されているマシンにアカウントを持ったユーザーに限り,
lpr
要求が受理されるというものである。
ラインプリンタキューがディスクを全て使い果たすことのないよう、 各スプールディレクトリ内のファイル minfree には、空きとして残しておくディスクブロックの数が書き込まれる。 この minfree の編集には、いかなるエディタを使っても構わない。
デーモンは、排他的アクセスのためのロック(後述)をセットした後、 ファイルの処理を開始し、スプールディレクトリを調べ、 cf で始まるファイルをさがす。 各 cf ファイルでは、印刷されるべきファイルや(印刷以外で)実行される べき動作が指定されている。そのそれぞれの行は、一つのキー文字で始まっ ており、それはその行の残りの部分とともに何をするべきかを表している。
もしファイルをオープンできないときは、
LOG_LPR
機能を使い、 syslog(3)
を通じてメッセージが記録される。
lpd
は、そのファイルの印刷を見送るまでに最大
20
回まで再オープンを試みる。
lpd
は、
flock(2)
を使ってロックファイルへの排他的アクセスを提供し、
複数のデーモンが同時にアクティブになるのを防ぐ。
もし、不意にデーモンが殺されたり死んだりしても、ロックファイルを削除する
必要はない。
ロックファイルは、読むことの可能な
ASCII 形式で保持され、2
つの行をその内容としている。
1
行目はデーモンのプロセス
id であり、2
行目は現在の印刷ジョブの
制御ファイル名である。
2 行目は、 lpq(1) と
lprm(1)
に使われるため、
lpd
の現在の状態を反映するよう更新される。
lpc(8), pac(8), lpr(1), lpq(1), lprm(1), syslog(3), printcap(5)
BSD 4.3 ラインプリンタマニュアル.
lpd
デーモンは、Version 6 AT&T UNIX
で登場した。
April 19, 1994 | BSD 4.4 |