pipe(2),#|,#s

pipe(2)と#|(パイプデバイス)を簡単に比較すると,

パイプデバイスは,

bind #| dir

という使い方になり,成功するとdir/dataとdir/data1というファイルが作られる.dataとdata1はペアになっていて,dataにデータを書き込むとdata1から読み出すことができ,同様にdata1に書き込んだデータをdataから読み出すことができる.前述のcexecpipe関数でオープンしていたのは,まさにこのdataとdata1である.

この考えをさらに進めて,リモートの計算機ともパイプで通信できるようにする仕掛けが#s(srvバイス)である.これ自体はファイル識別子をカーネルに教えるだけの仕組みだが,そのファイル識別子がリモートホストへのチャネルのときでも,ネットワーク透過に通信できる.分散OSっぽいねぇ.