[Armadillo:06291] Re: inetd経由でmjpg_streamer

Shin-ya Koga email@hidden
2010年 12月 8日 (水) 19:38:33 JST


サムシングプレシャスの古賀です。

斎藤さん([Armadillo:06290]):
>inetd.confに
> 
>mjpg-streamer stream tcp nowait root /usr/local/mjpg_streamer
>mjpg_streamer -i "input_uvc.so -d /dev/vidoo0 -y -f 10 -r 640x480" -o"output_http.so -p 8080 -w /var/www/stream"
>を書いて、openbsd-inet  を再起動後
> 
>手動で
>mjpg_streamer -i "input_uvc.so -d /dev/vidoo0 -y -f 10 -r 640x480" -o"output_http.so -p 8080 -w /var/www/stream"
>を実行したところ
…
>bind: Address already in use
>  o: server_thread(): bind(8080) failed
>とのエラーで起動できませんでした。
> 
>bind: Address already in use ですが
>この間に、ポート8080に要求は出していません。
>inetd自身がrestart時などに、ポートを一度開いたりするのでしょうか?

はい。たとえば
 http://linuxjm.sourceforge.jp/html/netkit/man8/inetd.8.html
 http://ja.wikipedia.org/wiki/Inetd
 http://www.fc-lab.com/network/program/inetd/
などが参考になると思います。

逆に言うと、mjpg_streamer のように、自前で bind()/listen()
accept() するタイプのサーバプログラムは、inetd と組み合わせる
ことは出来ないわけですよね。

inetd と組み合わせて使うとしたら、次の二つの方策が考えられるの
かなと思います:

a.) mjpg_streamer の output_http.so のソースをベースにして、
  標準入出力に対して HTTP 入出力を行う output plugin を
  実装して使う。

b.) mjpg_streamer の起動・終了を行う専用の daemon を実装して
  inetd から起動されるようにする(※その daemon を kick
  するためのポートを別途割り当てる)。  

--
古賀信哉 (株)サムシングプレシャス



armadillo メーリングリストの案内