68user's page 掲示板

Prev< No. 290〜306> Next  [最新発言に戻る] [過去ログ一覧]
No. 290 # M.Masuda 1999/04/30 (金) 23:26
こんばんは。

Perlのreaddirでの現象でお聞きしたいのですが。
普通、以下の様な記述で@filesには、ディレクトリ内のファイル&
ディレクトリが入りますが、この配列の中に返される文字列の中に
複数のバイナリが混じるというのは、ディレクトリエントリが壊れ
ているのでしょうか。

opendir(DIR, "./");
@files = readdir(DIR);
closedir(DIR);

特にヌル(\x00)が多量に含まれます。
さらにこの状態のディレクトリを、他のディレクトリにコピー
した時に症状が引き継がれるのは、壊れていると仮定すると
親ディレクトリからの影響が出ているのでしょうか。

またこの症状が出るのは、nfs等で共有しているディレクトリです。
何か分かる事が有りましたら、よろしくお願いします。
ちなみに以下のスクリプトでは問題無く表示されます。
#!/usr/local/bin/perl
$|=1;
print "Content-type: text/plain\n\n";
$_ = system("ls -l ./ 2>&1");
print "$_\n";

No. 291 # 68user 1999/05/01 (土) 07:48
> でもなんで%02dの時だけ『0』が...。
要は桁合わせですな。
Ex. printf("%d,%4d,%04d\n",10,10,10);

> この配列の中に返される文字列の中に複数のバイナリが混じるというのは、
> ディレクトリエントリが壊れているのでしょうか。
うーん、どうなんでしょうねぇ。漢字のファイル名ってこともありますし、
バイナリが混じっているだけで壊れているとは言い切れないです。

> 特にヌル(\x00)が多量に含まれます。
ファイル名にヌルってありだったかなぁ…?

具体的な出力結果を見てみないことには、なんとも言いがたいです。

No. 292 # くにろぅ [E-mail] 1999/05/01 (土) 08:37
あ、しょうもないことかも知れませんが
emiclock の costumes で
Transparent dress (一番下のコスチューム)
を、どうやったら拝めるのでしょうか?

No. 293 # M.Masuda 1999/05/01 (土) 16:05
>漢字のファイル名
これは無いです。

本によると「システムによって保守されるディレクトリ構造の内容」
とあります。という事からエントリが壊れているのかと思った訳です。

しかし、意図的に壊してみることまではさすがにできないので、
困ってしまいました。

もう少し調べてみます。ありがとうございました。

No. 294 # 68user 1999/05/01 (土) 18:09
> Transparent dress (一番下のコスチューム)
> を、どうやったら拝めるのでしょうか?

あはははは。誰もが一度は思った疑問ですね。
僕も知らなかったんで調べてみました。

    1. 30分チャイムを鳴らす設定にする。
    2. alarmを....年............に.....。
    3. 30分チャイムが鳴るまで待つ(0分or30分)
    4. Costumesに…なんとアレが!

ちなみにオリジナルのMac版のドキュメントには以下の記述がありますなぁ。

> < ひとりごと >
> ある日、もとそふと探検隊は某秘境の洞窟の壁に書かれた落書きを発見した。 
> 壁には、「1958年10月24日06時33分」と落書きされていた。これ
> が、いったい何を意味するのかはわからない。
> 洞窟は、さらに奥へと続いていた。仲間と30分に待ち合わせることにして、
> チャイムをセットし、隊長はさらに奥へと進んだ。
> 30分を知らせるチャイムが鳴った。そのとき、隊長の顔は、笑顔に変わって
> いた。ついに秘宝を発見したのだ。


…で見れますか?

うちのemiclockは30分チャイムがなぜか選べないようになってるんですが…
なんでだろ。というわけでソースを1行書き換えて見てしまいました(^^;

No. 295 # 岩本 1999/05/10 (月) 18:40
大変お久しぶりです。岩本です。
とは言っても覚えている人はいないでしょうけどね(笑)

実はUNIXでお伺いしたいことがあります。
crontabでシェルを動かしたいのですがうまくいきません。
以前Masudaさんに「実行時に有効になっている環境変数を
表示させてみて・・・」のアドバイスを頂き、その通りやって
見たところ、確かに環境変数がほとんど指定されていませんでした。
そこで環境変数をスクリプト内で追加設定させたいのですが
どうすればよいのでしょうか。ちなみにスクリプトに
envやsetenvを使って自ユーザログオン時の環境変数を
設定させてみたところ結局実行時に変数は変わってませんでした。

OSはソラリス2.5、マシンはsun7の300です。
ご存知の方、お詳しい方がいらっしゃいましたら
よろしくお願いいたします。

No. 296 # 68user 1999/05/12 (水) 00:43
> そこで環境変数をスクリプト内で追加設定させたいのですが
> どうすればよいのでしょうか。
動かしたいものがshスクリプトなら、先頭付近に
    export HOGE=fuga
書くとか。cshスクリプトなら
    setenv HOGE fuga
てな感じでしょうか。

No. 297 # 岩本 1999/05/14 (金) 19:09
68userさん、ありがとうございました。
無事問題が解決しました。
今後ともよろしくお願いします。

No. 298 # REMAHL 1999/05/16 (日) 01:56
ども、はじめまして。パソコンスクランブルの方でこのページ
をターゲットにしてしまったREMAHLと申します。EUCとリンクフリー
という条件が重なったため、あちらの掲示板にてソースが化ける
例として取り上げさせていただきました。この度は大変失礼しました。

それからスクリプト2、3頂きました。CGI勉強中なので研究材料
として使わせていただきます。これからもよろしくお願いします。

No. 299 # 68user 1999/05/16 (日) 07:47
どもども。ああいう場合に他サイトを例に出すのは
僕もよくやることなので、お気になさらぬよう。

No. 300 # REMAHL 1999/05/17 (月) 23:46
>どもども。ああいう場合に他サイトを例に出すのは
>僕もよくやることなので、お気になさらぬよう。

お気遣い、有り難うございます。

つい最近CGIを始めたばかりなので「CGIの小部屋」は
私のような素人には非常に参考になります。今は人様の
作られたスクリプトを改造している程度なので、まだまだ
分からないことだらけです。もし分からなければこの掲示板で
質問を、と思っていますので、その時はよろしくお願いします。

No. 301 # pz [E-mail] 1999/05/18 (火) 17:48
始めまして。
掲示板を発見したので、感謝の言葉でもと思い書き込みました。
仕事中に壁にぶつかるといつもこのサイトをみて解決の手助けにしてます。
とても助かってます。
これからも宜しくお願いします。





No. 302 # しょいち [E-mail] 1999/05/18 (火) 20:33
こんにちは。
ためになる、きれいでわかりやすいページなので大変よろこんでいます。
(色使いなんかも目に優しくていいですね、コードなんかを白バックで
読むのなんて耐えられませんです ^_^;)
がんばって勉強させていただきます。
これからもがんばってください。

最高にクールです

No. 303 # 68user 1999/05/20 (木) 23:07
お褒めいただき、ありがとうございます>しょいちさん、pzさん

ただ、ここの記述がわかりにくいとか、このコマンドの
この機能が解説されていないなど、悪いところも書いて
いただけると なおうれしく思います。何かお気づきに
なりましたら、また書き込んでください。

No. 304 # hoppy 1999/05/27 (木) 19:59
はじめました、bsdのコマンドマニュアルとして重宝させてもらって
ます。ところで hello worldと一行書いてccでコンパイルしたら
a.outができましたが
./a.out と入力しないと動きません。
単純にa.outと入力して動かすにはどうしたらよいのですか?

No. 305 # 68user 1999/05/27 (木) 20:43
PATH に . を加えれば、カレントディレクトリのプログラムが実行されます。
しかし、セキュリティ上お勧めしません(共用のマシンなら特に)。例えば
    set path = ( . /bin /usr/bin /usr/local/bin )
とすれば a.out だけでも動きます。しかし、誰かが /tmp/ls に
    #!/bin/sh
    rm -rf ~
という内容のプログラムを置いていた場合、あなたが
    cd /tmp; ls
としただけで、あなたのホームディレクトリ以下のファイルは
全て消えます。

ですから、PATHには . は含めない方が賢明です。どうしてもというなら、
    set path = ( /bin /usr/bin /usr/local/bin . )
などと、最後に付け加えましょう(でもお勧めはしません)。

タイプがめんどくさいという理由なら、シェルの補完(Ctrl-DとかTAB)を
有効に使う方がいいと思います。

No. 306 # hoppy 1999/05/27 (木) 21:10
さっそくの解答thanksです
とりあえずset pathの最後に.を追加致します。
シェルの補完はよくわからないので、もう少ししたら
やってみます(^^ゞ

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