> その中で、S_IFDIR とかを #defined した stat.h を探すのに > 手間取ってしまいました。 stat(2)を見るのが一番早いんじゃないでしょうか。 > 0x0200 save swapped text even after use sticky bitです。chmod 1755、chmod u+t などとすればこのビットを立てられます。 以下、知ってたらごめんなさいな説明。 昔のUNIXでは仮想記憶はなく、実メモリと HDD上のスワップ領域の 2本立てでした。で、sticky ビットが立っているファイル(実行ファイル?) のテキスト領域は、実行後もスワップ領域に保持され、再実行する際は 高速に実行できるようになっていました。つまり頻繁に使うプログラムの stickyを立てておけば高速に実行が可能だったわけです。 しかし、現在のコンピュータはキャッシュや仮想領域が進化したので、 stickyビットの重要性はなくなりました。FreeBSDではファイルに 対する stickyビットは無視されています。 # ここらへんは、正しいことを書いているかどうか自信がありません。 一方ディレクトリに対する stickyはちゃんと意味があって、 誰でもその下にファイルを作成することはできるけど、削除する際は ファイルのオーナーしか削除できないという意味があります。 /tmp がいい例ですね。 % ls -ld /tmp drwxrwxrwt 18 bin bin 1536 May 30 07:57 /tmp/ > 0xE000 whiteout うーん、ローカルの全ファイルに対して、このビットが立ってるか どうか調べてみたんですが、1つもありませんでした。なんでしょうね? > 下の方が真となって、ブロックデバイスと > 出たのですが(STDINも同じ) 僕のまわりのFreeBSD/Solarisでは、STDIN/STDOUTともに、普通の状態だと キャラクタデバイス(ttyですな)、ファイルにリダイレクトするとregular、 パイプならFIFOになりました。CGI上で実行すると、IN/OUTともFIFOでした。 # http://X68000.startshop.co.jp/~68user/tmp/mode.txt # http://X68000.startshop.co.jp/~68user/tmp/mode.cgi > これってウチのWebサーバーがCGIの標準出力を一旦ファイルに > リダイレクトしているということなのでしょうか? mmさんのところってHPですから(でしたよね?)、実装の違いがあるの かもしれないので、僕の知識では何とも言いがたいです。 |