68user's page 掲示板

Prev< No. 1939〜1944> Next  [最新発言に戻る] [過去ログ一覧]
No. 1939 # hsj 2001/05/10 (木) 15:46:28
>>1937 CZ
そのファイルをフルパスで指定すれば消せませんか?
DELE /home/hoge/~hogehoge
みたいに。

>>1938 ほいほい
http://x68000.startshop.co.jp/~68user/net/
68userさんがせっかくこういう物を提供してくださってるんですから
読みましょうよ・・・。

No. 1940 # ほいほい 2001/05/10 (木) 16:02:47
>>1939 hsj
たすかりました。
なんかいろいろ見てて混乱してました。
いまみたら、理解しました。どうもすいません・・・・・

No. 1941 # 68user 2001/05/10 (木) 19:49:04
メールでいただいた質問ですが、勉強になったのでこちらでお返事。

> http://x68000.startshop.co.jp/~68user/net/perl4.html
> にも書かれていますが
> Perl4では SOCK_STREAM の値を直接指定しなければならない
> となっておりますが、Perl4の場合
> require 'sys/socket.ph';
> とするのでは無いでしょうか?
> (perl4環境が無く、人づてなので当てずっぽうです。)
なるほど、既に perl4 のラクダ本も手元になく、常用環境には
perl5 しかないので知りませんでした。あのページには perl4
なら sys/socket.ph を使うよう追記しておきます。

> また、サンプルの
> > socket(SOCKET,PF_INET,SOCK_STREAM,0);
> ですが、protocol だけが直接、値を指定しているのは
> 何故でしょうか?
TCP や UDP を使う場合は 0 でよいです。/etc/protocols には
    ip 0 IP # internet protocol, pseudo protocol number
    tcp 6 TCP # transmission control protocol
    udp 17 UDP # user datagram protocol
となっていますので、TCP を使う場合は
    socket(SOCKET, PF_INET, SOCK_STREAM, 6);
    socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
などと明示的に指定してもいいです (可読性と、NIS への対応
という面から見ると後者がよい)。

しかし、アドレスファミリ(PF_*) とソケットタイプ (SOCK_*) の
値が決まると、プロトコルは一意に定まります (なぜかはよく
わかりません)。なので、プロトコルに 0 を指定すれば、自動的に
適切なプロトコルが決定されます。

FreeBSD なら socket(2) の下請け関数である socreate で
    http://www.jp.FreeBSD.org/cgi/cvsweb.cgi/src/sys/kern/uipc_socket.c?rev=1.97
    int
    socreate(dom, aso, type, proto, p)
                if (proto)
                                prp = pffindproto(dom, proto, type);
                else
                                prp = pffindtype(dom, type);
と検索を行う関数 pffindtype が呼ばれています。

なお、ICMP をしゃべったり、IP データグラムを直接生成する
ために raw ソケットを生成したい場合は 非 0 を指定します。

No. 1942 # 68user 2001/05/10 (木) 20:08:11
>>1939 hsj
> そのファイルをフルパスで指定すれば消せませんか?
> DELE /home/hoge/~hogehoge
> みたいに。
FTP サーバの実装依存でしょうが、FreeBSD 4.3-RELEASE 付属の
ftpd だと、カレントディレクトリに ~hogehoge がある状態で
    > rm ~hogehoge
    DELE ~hogehoge
となり消せました。

ただ、
    > rm ./~hogehoge
    > rm /home/user/~hogehoge
は同じく 4.3-RELEASE 付属の ftp コマンドが何を勘違いしたのか
    RMD ./~hogehoge
    RMD /home/user/~hogehoge
とディレクトリを削除しようとして失敗していました。
    > quote DELE ./~hogehoge
    DELE ./~hogehoge
と、直接 FTP コマンドを送ると OK でした。

UNIX 界では、~hoge が「hoge ユーザのホームディレクトリ」と
解釈されるのは ~ が先頭にあるときのみですから、フルパスで
書いたり ./~hoge などとすればよいです。ただし、
    % perl Makefile.PL INSTALLMAN3DIR=~/install
のように、アプリケーション側 (この場合は ExtUtils::MakeMaker) で
展開してくれるものもあります。

No. 1943 # 68user 2001/05/10 (木) 20:13:49
>>1941 68user
> アドレスファミリ(PF_*)
プロトコルファミリでした。

ちなみに、うちの web ではアドレスファミリ (AF_*) と
プロトコルファミリ (PF_*) の使い分けがいいかげんだった
ような気がします。いまだに違いがよくわからんなぁ。

No. 1944 # ED 2001/05/10 (木) 21:26:36
68userさん>
SEGA BBS以外は問題ないです。
理由はまあ掲示板の中身です…

友人が私の名前を使って書いたものなのですが。

部分的に消去とかはできるのでしょうか?

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