[#11357] [PATCH] an analogue of `long long' — "Nobuyoshi.Nakada" <nobu.nakada@...>

なかだです。

18 messages 2000/11/01
[#11358] Re: [PATCH] an analogue of `long long' — matz@... (Yukihiro Matsumoto) 2000/11/01

まつもと ゆきひろです

[#11364] Re: [PATCH] an analogue of `long long' — EGUCHI Osamu <eguchi@...> 2000/11/02

えぐち@エスアンドイー です。

[#11440] class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...>

[ruby-dev:11428] からの続きですが、threadは切りました。

14 messages 2000/11/08
[#11442] Re: class Character (was: Ruby I18N) — TAKAHASHI Masayoshi <maki@...> 2000/11/08

高橋征義です。用語について。

[#11443] Re: class Character (was: Ruby I18N) — Yasushi Shoji <yashi@...> 2000/11/08

At Wed, 8 Nov 2000 20:44:55 +0900,

[#11520] A problem of Socket methods on Windows — OKA Toshiyuki <oka@...>

岡と申します。

22 messages 2000/11/15
[#11523] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11528] Re: A problem of Socket methods on Windows — matz@... (Yukihiro Matsumoto) 2000/11/15

まつもと ゆきひろです

[#11532] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11534] Re: A problem of Socket methods on Windows — OKA Toshiyuki <oka@...> 2000/11/15

岡です。

[#11535] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11538] Re: A problem of Socket methods on Windows — "Nobuyoshi.Nakada" <nobu.nakada@...> 2000/11/15

なかだです。

[#11662] IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org>

In article <E140cR3-0002ls-00@ev.netlab.zetabits.co.jp>,

22 messages 2000/11/28
[#11663] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/28

まつもと ゆきひろです

[#11664] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <E140fxW-0002u9-00@ev.netlab.zetabits.co.jp>,

[#11665] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/28

In article <hvor93w5wb8.fsf@coulee.m17n.org>,

[#11669] Re: IO (Re: fork problem?) — Tanaka Akira <akr@...17n.org> 2000/11/29

In article <hvoofz05uwz.fsf@coulee.m17n.org>,

[#11672] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/11/29

まつもと ゆきひろです

[#11675] Re: IO (Re: fork problem?) — Koji Arai <JCA02266@...> 2000/11/30

新井です。

[#11677] Re: IO (Re: fork problem?) — matz@... (Yukihiro Matsumoto) 2000/12/01

まつもと ゆきひろです

[ruby-dev:11662] IO (Re: fork problem?)

From: Tanaka Akira <akr@...17n.org>
Date: 2000-11-28 07:09:15 UTC
List: ruby-dev #11662
In article <E140cR3-0002ls-00@ev.netlab.zetabits.co.jp>,
  matz@zetabits.com (Yukihiro Matsumoto) writes:

> そろそろ ruby-dev ですかね。

では。

> もうちょっと考えさせてください。F_DUPFDとかの問題もあります
> し。F_DUPFDではfのfdだけdupすればそれはそれで良いと言う考え
> 方もないではないですし。

私としては fcntl などのシステムコールが素直に表に出ているので、その操
作対象(file descriptor)も素直に表に出ていて欲しいなぁ、と思うわけです。
わざわざ dup して事態を複雑にすることはない、と。

ただ、たしかにふたつの file descriptor をひとつの IO オブジェクトにま
とめなければならない場合は存在するのでしょうが、その場合でも、fcntl と
かは別々に発行できるといいなぁ、と思います。

あと fcntl(2) を見直したのですが、dup して作った f2 に関していえば、ど
ちらかというと、F_SETFD だけを特別扱いした方がいい気がします。

# F_SETLKW を 2回やるとどうなるのだろう?

> |# fcntl といえば、O_NONBLOCK にして IO#read して EAGAIN になると途中ま
> |# で読んだぶんが蒸発してしまう、という話は報告しましたっけ?
> 
> まだです。readの実装の問題ですかね。

思い起こしつつ再現実験をしてみました。

% (echo -n a; sleep 1; echo bcdef)|./ruby -e 'require "fcntl"
STDIN.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK)
begin
p STDIN.read(2)
rescue Errno::EWOULDBLOCK
sleep 2
retry
end'
"bc"

こんなふうに最初の 1byte の "a" が蒸発してしまいます。つまり、
IO#read(2) の途中で例外が発生すると、それ以前に読まれたぶんが消えてし
まうわけです。

あと、なんか、試していたらこんなふうに Errno::E000 が発生することも発
見してしまいました。

% (echo a; sleep 1; echo b)|./ruby -e 'require "fcntl" 
STDIN.fcntl(Fcntl::F_SETFL, Fcntl::O_NONBLOCK)
loop { begin p STDIN.read; rescue Errno::EWOULDBLOCK; end }'
-e:3:in `read': Undefined error: 0 (Errno::E000)
        from -e:3
        from -e:2:in `loop'
        from -e:2

蒸発する方がバグか仕様かは非常に悩ましいのですが、Errno::E000 はバグな
気がします。
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「くっだらないコト聞いちゃったねー$(C⊇ ごっめーん$(C⊇」
  (魔法使い養成専門 マジックスター学院 2, 南澤ミヅキ)

In This Thread

Prev Next