68user's page 掲示板

Prev< No. 313〜316> Next  [最新発言に戻る] [過去ログ一覧]
No. 313 # 68user 1999/05/30 (日) 09:11
> ただ、私の周りにはちょっと偏屈な技術者が多く、人間性は信じら
> れない人がおおいです。
ん〜、まぁ初心者の程度にもよるかと。僕の場合、自分で調べようと
しない人、一度聞いたことを覚えようとしない(メモを取らない)人には、
教えたくないですね。

もちろん、
> 初心者を馬鹿にしきった口振りや態度
がよろしくないのは当然ですが、教えをられる側の程度にも
よるのではないかと思います。

> たとえば、とほほさんとは何度かメールのやり取りをしてますが、
> プログラマーな人なのに、おおらかな人間性を感じました。
いや〜僕はあんなに心が広くないので(^^;

ちなみに僕は他人に(直接面と向かって)教えてると、だんだん
不機嫌になってきますので、あまり教えないようにしてます(笑)。

No. 314 # 68user 1999/05/30 (日) 09:13
> その中で、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ですから(でしたよね?)、実装の違いがあるの
かもしれないので、僕の知識では何とも言いがたいです。

No. 315 # mm 1999/05/30 (日) 17:42
>stat(2)を見るのが一番早いんじゃないでしょうか。
あっ、すいません、以前教えて頂いた、
    http://www.jp.freebsd.org/man-jp/search.html
で、stat を検索すると、
    マニュアルがみつかりませんでした。"stat.[1-9n]"
という警告が出たんで、こっちは諦めてたのですが、
ウチのサーバーの man にはありました…(^^;
ただし、ビットの意味までは書いてないです…×

ところで、この stat(2) の (2) とかの数字は、どういう
意味なのでしょうか?
以前から少し気にはなってたんですが、ついつい放ったらかし
にしてました…(^o^;ゞ


>sticky bitです。chmod 1755、chmod u+t などとすれば
>このビットを立てられます。
あっ、sticky bitと聞いて思い出しました(^^;
swapの話や/tempの例も読んでたのですが、
昨日は連想が全く働きませんでした…すいませんですm(__)m
>以下、知ってたらごめんなさいな説明。
とんでもないです。知らない可能性の方が高いので、
お手数でなければ、ぜひ今後ともよろしくお願いしますm(_~_)m

>どうか調べてみたんですが、1つもありませんでした。なんでしょうね?
ls のソースを見てると、S_IFDIRに'/'、S_IFSOCKに'='という感じで、
S_IFWHTには、'%'を付けてるので、何か意味があるんでしょうね。

とにかく、下位9ビットの上の3ビットは
01000 sticky bit
02000 SGID
04000 SUID
ということで、8進で書いたら、UIDとかとの関連で思い出しました(^^;
(modeはやはり8進の方が分かり易い…)


>CGI上で実行すると、IN/OUTともFIFOでした。
私もそれを期待してたのですが…
それはともかく、先にウチで実行したCGIはマスクが
間違ってたので、mode.cgi を実行してみました。
環境は、HP-UX Netscape-Enterprise/2.01b です。
# http://www2s.biglobe.ne.jp/~cru/test/mode.cgi
1100000 000000000
is SOCKET

1100000 000000000
is SOCKET

ウッソー?
なんで、ソケット??
実は、nph-cgiで実行されてて、WWWサーバーの代わりに
ラッパーがヘッダを付加してるとか???


ちなみに、Windows95での実行結果です。
C>perl mode.cgi
0010000 000000000
is CHAR_DEV
0010000 000000000
is CHAR_DEV

C>perl mode.cgi < file1 >file2
C>cat file1 | perl mode.cgi | more
1000000 110110110
is REG_FILE
1000000 110110110
is REG_FILE

ついでに、Win95 のJava WWWサーバーでの実行結果
0001000 000000000
is FIFO
0001000 000000000
is FIFO
あれ? is REG_FILE を予想したのですが…??

No. 316 # 68user 1999/05/31 (月) 02:36
>  http://www.jp.freebsd.org/man-jp/search.html
> マニュアルがみつかりませんでした。"stat.[1-9n]"
> という警告が出たんで、こっちは諦めてたのですが、
このページ、日本語版がなければ英語版を表示してくれればいいのに。
改善要求出しておきます。

> ところで、この stat(2) の (2) とかの数字は、どういう意味なのでしょうか?
セクション番号です。
http://X68000.startshop.co.jp/~68user/unix/pickup?man

結構OSによって違っていて、SunOSなんかだと、1B,1C,1Fなどがあったり、
またあるOSではシステムコールだけど、別のOSではライブラリという
ものもあるので、セクション番号はあまり絶対的なものではありません。

各セクションの詳しい説明は、man 1 intro とか man 2 intorでわかります。

> S_IFWHTには、'%'を付けてるので、何か意味があるんでしょうね。
どうやら、unionファイルシステムというものに関係があるようですね。
でも役割などはよくわかりません。
http://home.jp.freebsd.org/cgi-bin/namazu.cgi?key=whiteout&dbname=users-jp
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/miscfs/union/Attic/libc.fts.c?rev=1.1.1.1
http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&cmd=&man=mount_union&dir=jpman-3.2.0%2Fman

> C>cat file1 | perl mode.cgi | more
> is REG_FILE
> is REG_FILE
DOSのパイプは、一度ファイルに落としてから再度そのファイルを
リダイレクトして実現しているんでしたっけ。

Prev< No. 313〜316> Next  [最新発言に戻る] [過去ログ一覧]