68user's page 掲示板

Prev< No. 4585〜4590> Next  [最新発言に戻る] [過去ログ一覧]
No. 4585 # まんたろう 2006/04/20 (木) 00:36:53
>>4579 べた

No.1
    m=max_desc(arglst[i],lst["${i}"]) ;
    添え字を利用した配列でいいのかな。
    あまり利用したことはないのでなんとも入れないが、こういうところで
    使えないのではないでしょうか。
    添え字にマッチする文字が出てきたときに、何かするのではなかった
    かと思います。

No.2、No.3
    多次元配列の使い方がおかしいのではないかと思います。
    データをセットする側が多次元配列や、アドレス渡しの戻りができて
    いない。たぶん、縦軸(列)の添え字の値が正しくない。
    縦軸(列)の値ってちゃんととれてますか。

No. 4586 # まんたろう 2006/04/20 (木) 00:44:59
>>4579 べた

多次元配列の使い方が正しいか問題はありますが、書き込みがあった
シェルを使用して、多次元配列で動くのを作ってみました。
一応、動きますが。

-----------------------
#!/bin/sh
#

if [ $# -eq 0 ]; then
        echo "$0 FileName"
        exit 1
fi

FILE=$1
OUT_FILE=kekka.log
rm ${OUT_FILE} > /dev/null 2>&1

nawk -v OUT=${OUT_FILE} '
function max_desc(lstadr,lst,x,y) {
        cnt=split(lstadr,arrlst,":");

        for(y=1;y<=cnt;y++) {
                lst[x,y]=arrlst[y];
        }
        return cnt;
}
{
        num=1;
        row=0;
        col=0;

        n=split($0,arglst,",");
        for(i=11;i<=n;i++) {
                ret=max_desc(arglst[i],lst,++row,col);
                if (ret>num) { num=ret; }
        }

        seqno=1;
        for(y=1; y<=num; y++) {
                for(j=1; j<=10; j++) {
                        if (j==2) {
                                printf("%d,",seqno++) >> OUT ;
                        } else {
                                printf("%s,",arglst[j]) >> OUT;
                        }
                }
                for(x=1; x<=row; x++) {
                        printf("%s",lst[x,y]) >> OUT;
                        if (x!=row) { printf("%s",",") >> OUT; }
                }
                printf("\n") >> OUT;
        }

        for(x=1; x<=row; x++) {
                for(y=1; y<=num; y++) {
                        delete lst[x,y];
                }
        }
}' ${FILE}

exit 0

-----------------------

No. 4587 # S-MSK☆ 2006/04/20 (木) 20:59:08
あるCシェルの本でファイル検査演算子「-f」の意味は
「ファイルは普通のファイル」とあるのですが、
普通の定義が分かりません。
また、逆に普通ではないファイルとはどういったもの
になるのでしょうか??
ご回答頂ければ、幸いです。
宜しくお願い致します。

No. 4588 # 68user 2006/04/21 (金) 11:02:50
>>4575 ふくし
もう解決されているとは思いますが一応。

Postfix に hosts を参照させるのが一番の早道かつ王道だと思いますが
わたしは Postfix を知らないので、識者のいるメーリングリストなどで
質問するのがよいかと思います。

>>4587 S-MSK☆
> 「ファイルは普通のファイル」とあるのですが、
> 普通の定義が分かりません。
csh 的には、stat(2) した結果の st_mode (構造体 stat のメンバ) に対して、
通常ファイル判定マクロ S_ISREG が真を返したら、「普通」です。

では S_ISREG がどういうケースで真を返すかというと、vfs の vtype の
値が VREG であるときです (vtype はファイル作成時に決定され、ファイル
システムに記録される)。

では vfs の vtype の値が VREG であるのはどういうときかというと、
ファイルシステム依存です。ただし一般的な UFS で言うと、vtype は
    1. シンボリックリンク
    2. ソケット
    3. FIFO (名前付きパイプ)
    4. デバイスファイル (キャラクタデバイス・ブロックデバイス)

    5. 通常ファイル
くらいです。よって、大抵の場合 1〜4 に当てはまらないなら通常ファイル
といえます。

実際は、Solaris Door とか、VxFS 圧縮ファイルとか、HP-UX のネットワーク特殊
ファイルなどわけのわからんのがありますので、プログラムとしては
    「1〜4 に当てはまらない場合は通常ファイル」
などという仮定はせず、素直に -f を使いましょう。

No. 4590 # 星野 2006/04/23 (日) 18:05:21
UNIX環境のAとBというプロセス間でsocket通信を行っています。(AF_UNIX指定)
一度、ソケットをcloseして、Bが再接続(connect)するとエラーになる場合があります。
errnoが何で返却されているのかわからないのですが。
たとえばEADDRINUSE の場合の対応策を教えて下さい。

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