2008年7月13日

[ruby-list:45223] Re: Mingw/cygwinでパイプが最大数以上作られたときの挙動

ワナベです。

2008/07/12 14:35 Masaki Suketa <masaki.suketa@xxxxx>:
> うちの環境(Windows XP SP2)でも再現しました。
> なので、ワナベさんの環境特有の問題ではないと思います。

情報ありがとうございます。
おかげさまで問題を絞り込むことができました。


結論から申し上げて、msvcrt.dll のバグだったようです。
msvcr71.dll を代わりに使うことで問題を回避できました。
以下のようにして確かめました。

$ cat test.c
#include <stdio.h>
#include <io.h>
int main(int argc, char **argv) {
int fd, n = 0;
while(_dup(0) != -1) n++;
printf("n = %i\n", n);
_dup(0);
printf("fin\n");
return 0;
}

$ gcc -mno-cygwin test.c && ./a.exe
n = 2045 // ← CTRL+C で中断するまで処理が止まる

$ gcc -mno-cygwin test.c -lmsvcr71 && ./a.exe
n = 2045
fin

--
ワナベ


投稿者 xml-rpc : 2008年7月13日 18:47
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/75241
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。