vine-users ML アーカイブ



[vine-users:071126] Re: ls > /dev/lp0 で /dev/lp0: Device or resource busy になる

  • From: 長南洋一 <cyoichi@xxxxxxxxxxxxxxx>
  • Subject: [vine-users:071126] Re: ls > /dev/lp0 で /dev/lp0: Device or resource busy になる
  • Date: Fri, 25 Mar 2005 21:25:42 +0900 (JST)
長南です。

今日 Vine 3.1 で試してみたところ、私が書き直したあの input filter は、
Vine 2.6 では一応動くものの、3.1 ではうまく行かないことがわかりました。

最初に私が使った /etc/printcap と、input filter を書いておきます。

$ cat /etc/printcap
##PRINTTOOL3## LOCAL dj505j 300x300 a4 {} HPDeskJet505J 8 {}
lp:\
	:sd=/var/spool/lpd/lp:\
	:mx#0:\
	:sh:\
	:lp=/dev/lp0:\
	:if=/usr/lib/rhs/rhs-printfilters//master-filter:
##PRINTTOOL3## LOCAL 
raw:\
	:sd=/var/spool/lpd/raw:\
	:mx#0:\
	:sh:\
	:lp=/dev/lp0:\
	:of=/tmp/myoutfil:

$ cat /tmp/myoutfil
#!/bin/sh
pid=`ps ax |grep $0 |head -1 |cut -d ' ' -f 2`
echo "My test filter"
kill -STOP $pid
/bin/cat

1) このフィルタだと、ps ax の出力の行頭にある空白の個数によって、
   pid を正しく読み取れないことがある。そこで、こう直しました。

   pid=`ps ax |grep $0 |head -1 |cut -d ' ' -f 2`
                ↓
   pid=`ps ax |grep $0 |awk 'NR==1{print $1}'`

2) Vine 2.6 なら、これで ls |lpr -Praw とすれば、希望する結果を
   得られるのですが、Vine 3.1 では「My test filter」と印刷したところで、
   プリンタが止まってしまいます。
   しかも、ls |lpr -Praw は一応終了して、プロンプトに戻っているのに、
   /var/spool/lpd/raw には dfA450hoge.hogenet といった印刷データが、
   残ってしまっているのです。

私の書き直したフィルタがいい加減だからでしょうか(大いにあり得る)。
それとも、LPRng のバージョンの問題なのでしょうか。
  Vine 2.6r4:    LPRng-3.7.4-6vl5.1
  Vine 3.1:      LPRng-3.8.21-0vl2

なお、たけ(tk)さんのオリジナルのフィルタを(厳密には echo  -n '@bFOUT1;' を
echo "My test filter" に変えたものですが) of ではなく、if にした場合は、
Vine 3.1 でもきちんと印刷が出来ます。

-- 
長南洋一