68user's page 掲示板

Prev< No. 4072〜4079> Next  [最新発言に戻る] [過去ログ一覧]
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"
の出力で置き換える事になりますので、
$#で上記コマンドの結果出力されたファイル数を参照できます。

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