[Moscow.pm] STDIN <> и чёрная магия
Ruslan Zakirov
ruz на bestpractical.com
Пт Дек 9 00:25:53 PST 2011
2011/12/8 Alexandr Gomoliako <zzz на zzz.org.ua>:
> Все сводится к тому, что при первой 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