ftpfs

FTPクライアントを考えてみよう.UNIXの場合は独立したアプリケーションであり,コマンドラインインタプリタやコマンドはアプリケーションとして作りこむ必要がある.一方,Plan9は,リソースをファイルとして名前空間マッピングするファイルサーバとして作るのが作法だ.このようにネットワーク透過にリソースを扱うことで,FTPサーバ上のリソースに対しても,grepシェルスクリプトを使うことができる.

cpu% ftpfs ftp.ring.gr.jp
220 ring.ip-kyoto.ad.jp FTP server (Version wu-2.6.2(1) Sun Aug 1 15:32:09 JST 2004) ready.
User[default = hoge]: anonymous
331 Guest login ok, send your complete e-mail address as password.
Password: 
230-
230-         ##################################################
230-         #     Welcome to the RingServer FTP service.     #
230-         ##################################################
230-
230- Localtime [Mon Mar  6 22:52:20 2006 JST+0900]
230- Current [26] users / Max [100] users
230-
230-
230 Guest login ok, access restrictions apply.
215 UNIX Type: L8 Version: BSD-199506
257 "/" is current directory.

これで,/n/ftp/ring以下にFTPサーバが見えるようになった.このように名前空間を枝接ぎすることを,Plan9ではbindと呼ぶ.bindがUNIXのmountと違うのは,名前空間はプロセス毎に異なる点だ.つまり,(rioを使っているなら)あるウィンドウのプロセスには/n/ftp/ringが見えているが,別ウインドウのプロセスには/n/ftp/ringが見えないのだ.

bindを解除するときは,ftpfsをkillすればよい.

cpu% kill ftpfs | rc