68user's page 掲示板

Prev< No. 4056〜4084> Next  [最新発言に戻る] [過去ログ一覧]
No. 4056 # 68user 2004/11/20 (土) 04:12:12
なんとなくアンケートをとってみることにしました。
      http://X68000.q-e-d.net/~68user/tmp/questionnaire.cgi

No. 4057 # 68user 2004/11/24 (水) 00:24:59
「UNIX の部屋」を更新しました。
      http://X68000.q-e-d.net/~68user/unix/

No. 4058 # へにか [URL] 2004/11/24 (水) 07:42:01
http://x68000.q-e-d.net/~68user/unix/pickup?freebsd-update
注意点は以下の通り。とある文言の、
<li>freebsd-updateの<li>、
HTTP 経由でファイルを\取得するので、の\、
これらは、誤植でしょうか? でも、ソースを見ると<LI>と大文字で書かれてるし・・・

No. 4059 # 68user 2004/11/25 (木) 01:15:20
>>4058 へにか
ありがとうございます。修正しました。

誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。

No. 4060 # へにか 2004/11/25 (木) 08:29:07
>>4059 68user
> 誤植って言いはると void 氏みたいなので、タイプミスということでひとつ。
了解しました。気になったので、検索かけたら・・・ 何て言っていいのやら。

No. 4061 # 68user 2004/11/28 (日) 04:14:13
日記。

    % mkdir dir
    % touch dir/file
    % chmod 400 dir
    % ls -l dir

としたとき、dir/file を stat(2) する権限がないわけなので、Permission
denied となる (Linux・Solaris では実際にそうなる)。
# http://x68000.q-e-d.net/~68user/unix/pickup?chmod

ところが FreeBSD では何も表示されず (エラーも出ず)、exit status も 0
で正常終了してしまっている。

これを調べようと、FreeBSD 5.2.1-RELEASE の ls ソースを見てみる。
# http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/bin/ls/

ずっと ls ってのは opendir して readdir して stat するものだと信じていたが、
実際には
      fts(3) -- traverse a file hierarchy
      http://www.freebsd.org/cgi/man.cgi?query=fts&manpath=FreeBSD+5.3-RELEASE+and+Ports&format=html
を使っていて、上記のシステムコールは間接的にしか使用していなかった。

>>3773 68user
で買った本を読むと、しっかり書いてあった。
      この人の書く文章にはおもしろみのかけらもなく
なんて文句言う前に、ちゃんと目を通すべきということか (全然読んでなかった)。

fts(3) は 4.4BSD から実装され、GNU 方面では glibc2 で採用された。glibc の
マニュアルには
        BSD 4.4. fts ユーティリティは、将来の St -p1003.1-88 リビジョンに
        含まれると期待されている。
と威勢のいいことが書いてあるが、少なくとも Solaris9 には実装されていない。


はじめて fts(3) を使ってみる。以下のプログラムで、stat できない場合エラーと
判断できている。FreeBSD の ls にはそれっぽい箇所があるにはあるが、その処理が
うまく機能していないのか、あるいは謎の仕様なのか…。

-----
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fts.h>

main(){
        FTS *ftsp;
        char *path[2]={"dir", NULL};
        ftsp = fts_open(path, FTS_PHYSICAL | FTS_NOCHDIR, NULL);
        if ( ftsp == NULL ){
                perror("fts_open");
                exit(1);
        }
        FTSENT *ftsentp;
        while (1){
                ftsentp = fts_read(ftsp);
                if ( ftsentp == NULL ){
                        break;
                }

                struct stat *sp = ftsentp->fts_statp;

                printf("%c", sp->st_mode&S_IRUSR ? 'r' : '-');
                printf("%c", sp->st_mode&S_IWUSR ? 'w' : '-');
                printf("%c", sp->st_mode&S_IXUSR ? 'x' : '-');
                printf("%c", sp->st_mode&S_IRGRP ? 'r' : '-');
                printf("%c", sp->st_mode&S_IWGRP ? 'w' : '-');
                printf("%c", sp->st_mode&S_IXGRP ? 'x' : '-');
                printf("%c", sp->st_mode&S_IROTH ? 'r' : '-');
                printf("%c", sp->st_mode&S_IWOTH ? 'w' : '-');
                printf("%c", sp->st_mode&S_IXOTH ? 'x' : '-');
                printf(" %d %s\n", sp->st_mode, ftsentp->fts_path);

                if ( ftsentp->fts_info == FTS_NS ){
                        perror("stat failed");
                        exit(1);
                }
        }
        exit(0);
}
------

あと、
      http://www.freebsd.org/cgi/man.cgi
にて FreeBSD 5.3-RELEASE からは ports マニュアルも検索できるように
なっていることに気づいた。これは大変素晴らしい。

No. 4062 # 68user 2004/12/05 (日) 04:03:48
>>4056 68user
> なんとなくアンケートをとってみることにしました。
アンケートの受付を (11/27 の時点で) 終了しました。結果をお知らせします。

[質問]
68user's page で今後読みたいコンテンツがあれば選択してください (複数選択可)。

[選択肢]
1. UNIX コマンドのコンテンツ充実
2. UNIX howto (「〜するには?」集のようなもの)
3. UNIX インストール・サーバ構築
4. ネットワークプログラミングのコンテンツ充実
5. web と CGI についてのコンテンツ充実 (含 Java Servlet・EJB)
6. C 言語講座的なもの
7. 業務系システム構築講座 (設計・コーディング・DB)
8. プログラマや SE の仕事について思うことをつらつらと

[結果]
回答総数 67

1. 36(17%) ************************************
2. 42(20%) ******************************************
3. 27(13%) ***************************
4. 29(14%) *****************************
5. 13(06%) *************
6. 14(06%) **************
7. 18(08%) ******************
8. 25(12%) *************************

[感想]
1・2 が多いのは予想していましたが、5・6 が少ないのは予想外でした。

5 は書きかけのコンテンツのまま放置してあるので、その辺の情報を今ほしい
人はここにはいないってことでしょうか。6 は世の中は意外と保守的で、仕事で
いまだに C でごりごり書いている (書かされている) 人が多数いるに違いない
と予想したのですが、はずれたようで。

あと、7 より 8 の方が多いのもちょっと不思議です。


頂いたコメントについてですが、
> div 開始タグより div 終了タグが圧倒的に多い
とりあえず気づいたところは直しました。自分で確認して、あまりにも
閉じ側が多いので笑ってしまいました。

あと、
>>3951 ほんたか
> 1.「h 1文字左に移動」がリストからはみ出ています。
も直しました。

アンケート結果は今後の参考にさせていただきます。ありがとうございました。

No. 4063 # 68user 2004/12/06 (月) 02:27:19
「ネットワークプログラミングの基礎知識」に
      HTTP クライアントを作ってみよう(5) - 認証編 -
          http://X68000.q-e-d.net/~68user/net/http-auth-1.html
を追加しました。

No. 4064 # sqh00 [E-mail] 2004/12/19 (日) 13:12:22
こんにちは。 こちらのサイトに来るのは今日が初めてですが、内容が充実していて大変参考になるサイトですね。 今後も利用させて頂こうと思います。さっそくですが、xlibについて質問をさせてください。http://x68000.q-e-d.net/~68user/xprogram/xlib-1.html のxlib-1.c を
cc -o xlib-1 xlib-1.c -I /usr/X11R6/include -lX11 -L /usr/X11R6/li のように実行したら、何にも出て来なかった。私が使っているのは red hat linux 8.0です。宜しくお願いします。

No. 4065 # 68user 2004/12/20 (月) 00:08:34
>>4064 sqh00
カレントディレクトリに xlib-1 というバイナリが生成されているか、
あるいは何かしらのエラーメッセージが出力されていると思いますので
確認してみてください。

No. 4066 # sqh00 [E-mail] 2004/12/20 (月) 22:17:10
カレントディレクトリに xlib-1 というバイナリが生成されているが、実行できない。このように、実行したら、何にも出て来なかった。
  
      [root@dm1511 xlib]# xlib-1
        bash: xlib-1: command not found

No. 4067 # 68user 2004/12/20 (月) 22:35:27
>>4066 sqh00
カレントディレクトリにあるバイナリは
    % ./xlib-1
と実行してください (% はプロンプト)。

No. 4068 # sqh00 2004/12/22 (水) 14:30:39
実行ができました。ありがとうございます。

No. 4069 # 68user 2004/12/23 (木) 06:52:27
「ネットワークプログラミングの基礎知識」に
      HTTP クライアントを作ってみよう(6) - Digest 認証編 -
            http://X68000.q-e-d.net/~68user/net/http-auth-2.html
を追加しました。

ところで cnonce は選択平文攻撃への耐性を高める効果があるとかなんとか
知ったかぶって書いてしまいましたが、cnonce がないと具体的にどういう
攻撃ができるんでしょうかね。

差分解読法かなぁと思ったんですが、MD5 に差分解読法って有効なんでしょうか。
あるいは salt 的な意味合いがあるんでしょうか?

いまいちイメージがわかない。

No. 4070 # たなか 2004/12/28 (火) 00:04:48
「ネットワークプログラミングの基礎知識」で勉強させていただいています。
kqueue の説明をみて早速いぢってみました。
サンプルでは kqueue() の戻り値に対して、終了時の処理が何もされていません。
man で調べたたところ、kqueue() の戻り値はファイルデスクリプタと記されています。
init kq = kqueue();
close(kq);
としても、close の戻り値が -1 で閉じることができませんでした。
なので、
init kq = kqueue();
close(kq);
init kq = kqueue();
close(kq);
とすると、kq は 1 回目が 9、2 回目が 10 といったようにインクリメントされてしまいました。
fcntl で kq の情報を取得しようとしてもすべての戻り値は -1 でした。
なんとなく、ファイルデスクリプタとして扱えていないような気がします。
当方は Mac OS X 10.3.7(BSD 4.4 ベースの Darwin) です。
本当の BSD なら、close できるものなのでしょうか。
もし、kqueue の説明を追加する予定があるようでしたら、close または、それに代わる処理も追加してもらえると大変助かります。

No. 4071 # 68user 2004/12/30 (木) 03:31:09
>>4070 たなか
> 本当の BSD なら、close できるものなのでしょうか。
FreeBSD 5.2-RELEASE では close(2) できました。ちなみに
カーネルには queue 用を close するコードも含まれています。

詳しくないので事情はわかりませんが、Mac OS X (Darwin?) の
問題ではないかと思います。

> close または、それに代わる処理も追加してもらえると大変助かります。
echo サーバばかり作っていると終了処理がおろそかになっていけませんね。
「quit」を送ると終了するようにするなど、何かしら考えたいと思います。

No. 4072 # たなか 2004/12/30 (木) 09:44:40
>>4071 68user

どうもありがとうございます。

>> 本当の BSD なら、close できるものなのでしょうか。
> FreeBSD 5.2-RELEASE では close(2) できました。ちなみに
> カーネルには queue 用を close するコードも含まれています。

手元に BSD が動作するマシンがないので、実験できませんでした。
Darwin の問題ですね。Apple に連絡してみます。
下のコードを実行すると次のような結果となります。

kqueue : 3
close(3) : -1
close: Bad file descriptor
kqueue : 4
close(4) : -1
close: Bad file descriptor

------------------------------------------------
#include <stdio.h>

#include <sys/types.h>
#include <sys/event.h>
#include <sys/time.h>

#include <unistd.h>

int
main() {

        int kq;
        int ret;

        kq = kqueue();
        printf("kqueue : %d?n", kq);
        if (kq == -1) {
                perror("kqueue");
        } else {
                ret = close(kq);
                printf("close(%d) : %d?n", kq, ret);
                if (ret == -1) {
                        perror("close");
                }
        }

        kq = kqueue();
        printf("kqueue : %d?n", kq);
        if (kq == -1) {
                perror("kqueue");
        } else {
                ret = close(kq);
                printf("close(%d) : %d?n", kq, ret);
                if (ret == -1) {
                        perror("close");
                }
        }

        return 0;
}
------------------------------------------------

No. 4073 # さいさん 2004/12/30 (木) 18:01:49
サーバがHP-UX11.00で、Bシェルでシェルを書いています。
シェル中で、「ls *.txt」を実行しています。

"*.txt"が存在しない場合、エラーが出力されるので、
「ls *t.xt > /dev/null 2>&1」で、エラーを出さないよう
にしました。

そこで、lsの処理に"grep -v"を追加し、"*.txt"がない
状態にすると「*.txt がみつかりません。」がでます。

ls *t.xt | grep -v "kekka" > /dev/null 2>&1

エラーがでないようにするにはどうしたらよいのですか。

No. 4074 # zsh 2004/12/31 (金) 18:57:02
ここで質問する人のブラウザには、
「UNIX・ネットワークに関する一般的な質問は受け付けていません。」
という一文は映らないのだろうか?

>>4073 さいさん
最終的にどうしたいのか良く判らないが、取りあえずはこれで。
ls *txt 2>/dev/null | grep -v "kekka"

No. 4075 # さいさん 2005/01/01 (土) 16:34:07
>>4074 zsh

ありがとうございます。

実際にしたいことは、
シェルを実行した際、「*.txt がみつかりません。」を
標準出力したくないのと、戻り値の判定をしたいのです。

ls *.ldif | grep -v "kekka" > /dev/null 2>&1
if [ $? -ne 0 ] ; then
        echo "Text File Nothing Today"
        exit 0
fi

No. 4076 # さいさん 2005/01/01 (土) 16:36:28
>>4075 さいさん

すみません。
間違いがありました。


実際にしたいことは、
シェルを実行した際、「*.txt がみつかりません。」を
標準出力したくないのと、戻り値の判定をしたいのです。

ls *.txt | grep -v "kekka" > /dev/null 2>&1
if [ $? -ne 0 ] ; then
                echo "Text File Nothing Today"
                exit 0
fi

No. 4077 # zsh 2005/01/03 (月) 00:17:18
>>4076 さいさん
結果的にファイルの有無を確認したいんですよね?
だとすれば、戻り値のチェックよりも下記のようにしては如何でしょうか?

set -- `ls *txt 2>/dev/null | grep -v "kekka"`
if [ $# -eq 0 ] ; then
        echo "no file."
fi

※:シェルに引数を与えている場合等は考慮が必要です。

No. 4078 # さいさん 2005/01/04 (火) 15:57:43
>>4077 zsh

ありがとうございます。

set -- `ls *txt 2>/dev/null | grep -v "kekka"`

「set -- `ls 」
の使い方教えてください。
どのような意味なのですか

No. 4079 # zsh 2005/01/05 (水) 10:38:55
set --
で引数(定位置パラメタだっけ?)を書き換えることが出来ます。

今回の場合は、
ls *txt 2>/dev/null | grep -v "kekka"
の出力で置き換える事になりますので、
$#で上記コマンドの結果出力されたファイル数を参照できます。

No. 4080 # さいさん 2005/01/09 (日) 14:24:11
>>4079 zsh

お礼遅くなって申し訳ありません。
ありがとうございます。

>set --
>で引数(定位置パラメタだっけ?)を書き換えることが出来ます。

参考本とかで調べてます。

No. 4081 # しょしん [E-mail] 2005/01/21 (金) 14:40:41
ご存知の方おられましたら、ご教授ください。
環境OSは、Win2000です。
OpenSSLライブラリを利用したDER形式の鍵ファイルの読み書き方法を実装方法が
わかりません。i2d_RSAPrivateKey、d2i_RSAPrivateKeyを利用し、ファイル出力
をしてみましたが、_fp付きはエラーです。(_bio付きはOK)
また、ここで出力された鍵ファイルは、OpenSSLでは、暗号/復号可能です。
しかし、他社製品(RSA BSAFE)では、鍵ファイル読み込みエラーとなります。
rsaコマンド等で変換作業を行うと読み込み可能となり、暗号・復号ができます。
なんだか理解できません。
以上、宜しくお願い致します。

No. 4082 # 68user 2005/01/21 (金) 15:17:49
>>4081 しょしん
暗号に関する一般的な質問も受け付けていません。

    ■暗号技術【ROUND2】■
    http://pc5.2ch.net/test/read.cgi/tech/1088530204/l50

などで質問してください。

- OpenSSL のバージョンくらい書きましょう。
- 何を知りたいのか不明。_bio 付きで出力して、rsa コマンド等で
    変換して、RSA BSAFE で読み込めているんなら別にいいのでは。
    例えば「rsa コマンドに頼りたくない」「なぜ rsa コマンドを
    使わなければいけないのかわからないので、解説してほしい」
    などと書くべき。
- 単に _fp 付きはエラーと言われても、「コーディングミスでは?」
    くらいしか返す言葉はありません。つーか、ソースくらい提示しましょう。

No. 4083 # >>4082 2005/01/21 (金) 16:20:40
内容不備&質問場所違いでした。
大変失礼しました。
撤収します。

No. 4084 # yoshiki 2005/01/25 (火) 09:47:00
CGIでmkdirとかmountとかを呼び出す方法をご教授願います。
サーバー上でプログラムを実行させたいのですが、動作しませんでした。

C言語にてCGIプログラムを作っています。
execveを使用してもうまく動作しませんでした。


------- test.c (test.cgi) -----------------------
#include <stdio.h>

int main()
{
    char *argv[3];
    argv[0]="/bin/mkdir";
    argv[1]="test";
    argv[2]=NULL;

    int pid=fork();
    if(pid==0){
        execve(argv[0],argv,NULL);
        perror("execve");
        exit(0);
    }
    return 0;
}

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