Чтобы помочь поддерживающим разработчикам прочитать код, я предложил бы первую альтернативу.
Похоже, это была известная ошибка в Windows 2000: Перенаправление STDIN / STDOUT может не работать, если запущено из файловой ассоциации .
У меня такое же поведение вы описываете с помощью Strawberry Perl на WinXP, однако, как только я создал запись реестра, описанную в статье выше (даже если запись reg нацелена на Windows 2000), stdin
работает должным образом. если указанная выше ссылка исчезнет, то запись в регистре, которую она предлагает создать, будет:
HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ Explorer
InheritConsoleHandles
REG_DWORD
Десятичное
1
Изменить : Я должен добавить, что хотя в статье KB утверждается, что это было исправлено в XP SP1, у меня установлена XP SP3. Так что я не могу сказать, сломала ли это MS это или никогда не исправляла полностью!