(View this PageEdit this PageUploads to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide)
[blog] [ML] [todo] [CVS] [bug] [apache log] [swiki log] [statistics] [map] [man] [info] [アンテナ]

detachtty

LISPで、サーバー系の常駐プロセス(いわゆるdaemon)を作成するときに
使用すると便利なツール。

コマンドとしては、detachttyとattachttyの2つ。
detachttyで、daemonとして、プロセスを起動する。このときにUNIXドメイン
のソケットを指定されたパスに生成する。
このソケットを利用して、atachttyで、daemonプロセスにアタッチする。
ソケット経由で、daemon内のLISPに対し、REPLができるという仕組み。

-----------

dettachttyの使い方例(その1:コマンドライン)


detachtty –dribble-file /var/log/cliki-dribble –log-file \
  /var/log/detachtty.log –pid-file /var/run/cliki.pid \
  /var/run/cliki-socket /usr/bin/lisp -eval '(load-system :telentweb)' \
  -eval '(progn (telentweb::init) (telentweb::start))' 


これにattachする場合には、

attachtty /var/run/cliki-socket

などとします。
同一マシン内であれば、attachttyではソケットのパス指定だけでいけます。
(但し、セキュリティ上の問題があるので、ソケットへのアクセス権限には、
注意が必要です。)
他マシンの場合には、attachtty foo@server:/var/run/cliki-socket
などのように指定します、
このとき、ssh経由でアクセスされるようですが、詳細は知りません。

-----------

dettachttyの使い方例(その2:起動シェル)

起動シェルスクリプトを書いて見ました。
参考にして下さい。ちなみに、適切に/etc/init.dの中に設定すれば、
そのまま使えるとは思います。

-----------

detachttyとSLIMEの関係

別に関係はないのですが、detachttyで起動したLISPプロセスと、SLIME
やっぱメンテしたいな〜って思います。
=やり方=
単純ですが、単に、ASDFから、swankをロードしておいて、LISPプロセス
内で、(swank:create-swank-server 4005)などとしておきます。
そいでもって、emacsから、M-x slime-connect
すればよいです。

-----------

関連リンク


-----------

Link to this Page