[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