Я столкнулся с некоторым (для меня) странным поведением при передаче вывода скрипта Python в wc
с недопустимыми аргументами.
λ python test.py
Hello!
λ python test.py | wc -li
wc: unknown option -- i
Try 'wc --help' for more information.
Exception ignored in: <_io.TextIOWrapper name='<stdout>' mode='w' encoding='cp1252'>
OSError: [Errno 22] Invalid argument
Что здесь происходит?
Моя конфигурация
- Windows 10
- Командир
- msysgit 2.5.1.окна.1
OSError
и почему это связано с недопустимым аргументом, переданным вwc
. - person Niklas R   schedule 14.09.2015wc
завершается, когда он видит недопустимую опцию, которая закрывает канал, python продолжает писать в канал и терпит неудачу. К счастью, я получаю более разумное сообщение об ошибке для того же исключения (Mac OSX):BrokenPipeError: [Errno 32] Broken pipe
. - person AChampion   schedule 14.09.2015EINVAL
. CRT должен сопоставить тысячи кодов ошибок Win32 примерно с 40 значениямиerrno
. Вероятно, ошибка Win32 здесьERROR_NO_DATA
, потому что канал закрывается. В принципе, я думаю, что это должно соответствоватьEPIPE
(сломанная труба), но по какой-то причине CRT использует значение по умолчаниюEINVAL
(недопустимый аргумент). - person Eryk Sun   schedule 14.09.2015