2011/12/8 Alexandr Gomoliako <[email protected]>:
> Все сводится к тому, что при первой open после закрытия fd 0
> подгружается PerlIO и соответственно использует первый
> свободный дексриптор, т.е. fd 0.

Блин. Ну почему это не баг. Еще один прикол из этой серии:

local *STDOUT
open STDOUT, ...;

system ...
open my $fh, '|-', ...

Тоже соответственно не работают нормально из-за этого.

Еще в этом направлении. В mod_perl 2, до версии 2.0.5 есть проблема.
Они закрывают STDOUT и открывают его на /dev/null, но делают это
"неправильно". Что приводит к тому, что fd #1 остается свободен и его
получает что-то другое, например БД.
Как вы понимаете запуск утилиты без перехвата вывода приводит к записи
в хендл БД мусора и разрыву соединения. Дебажить это было весело.




-- 
Best regards, Ruslan.
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить