う ご か ない
時代がInfernoかどうかは知りませんが、折角本を買ったので今日から読んでいて、今Channelの所だったりします。
で、折角載っていたのと、これはまぁ割と楽にフッくれてるよなーとか思ったので、次のコードをEmu Inferno on OS Xで動かそうと思いました。
http://www.gemusehaken.org/ipwl/sourcecode/book-examples/simplefileserver.b
多少変更を加えて
alt { (off, nbytes, fid, rc) := <-chanref.read => { sys->print("in read req\n"); ... (offset, writedata, fid, wc) := <-chanref.write => { sys->print("in write\n");
まぁこんな感じで。
で、/usr/infernoしかいなかったので、/usr/pipをmkdirして、synthetic.fileを作って、catやらechoしても何も表示されない。
しょうがないから、手前で
implement Test; include "sys.m"; include "draw.m"; sys : Sys; Test: module { init : fn(nil : ref Draw->Context,nil : list of string); }; init(nil : ref Draw->Context,nil : list of string) { buf : array of byte; buf = array [500] of byte; sys = load Sys Sys->PATH; fd := sys->open("/usr/pip/synthetic.file",sys->OREAD); n := sys->read(fd,buf,len buf); buf = buf[:n]; sys->print("=> %s\n",string buf); }
とかやったが音沙汰無し。なんでだろーなー。
とか思ったが、別shellじゃなくて、./simplefileserverをやったシェル上で上記のreadするのを実行したらprintされた。普通にcatでも問題無し。
なんでだろ。
飛ばして読んだ所に、何か書いてるんだろうか。
ちなみに、今誰でログインしてる事になってんだ?www
それを確認する方法も、useraddも分からない。ふへー。