А почему могут рваться пайпы, когда по ним шлют неюникодовые символы?
Для максимальной простоты приведу пример CGI приложения:
Вместо iconv можно воткнуть sed 'y/\xC0\xC1\xC2/АБВ/', итог тот же. Так вот, если запусить пример из консоли как приложение, то получим итоговую строку testАБВ, как и ожидалось. Если же зайти по соотв. адресу через браузер (вебсервер никаких mod_ не содержит, тупо запускает CGI приложения через execl), то получим только test, а всё что написано дальше - не приходит, причём, в логах веб-сервера увидим что не приходит, т.к. само приложение дальше ничего и не говорило. Если вместо пайпов использовать временные файлы - всё работает. Если перенаправить вывод iconv в файл - увидим что при запуске через веб-сервер в файле только test и написано, а при запуске из терминала - вся строка.
which показывает что бинарники берутся одни и те же. Из подозрительного пока что вижу только различия в $TERM (xterm и dumb соотв., правда, export TERM="xterm" дело не меняет) и locale: соотв.
и
Только вот не надо уходить от темы, говоря типа "сколько ненужностей itt", не о том речь сейчас, так что если нечего сказать - лучше пропустите. Гуглить не пробовал, ибо пока не совсем понятно даже какие слова подобрать. В общем, вопрос почему в первых условиях всё работает как задумано, а во вторых - ломается, причём, ломается только `|', а `>' и `
Re: А почему могут рваться пайпы, когда по ним шлют неюникодовые символы?
> Только вот не надо уходить от темы
Это делает не пайп, а iconv потому что не знает во что ему преобразовывать твои символы. Припиши в конец команды " -t UTF-8" и я уверен твоя жизнь сразу же улучшится в полтора раза.
Re: А почему могут рваться пайпы, когда по ним шлют неюникодовые символы?
> Только вот не надо уходить от темы
Это делает не пайп, а iconv потому что не знает во что ему преобразовывать твои символы. Припиши в конец команды " -t UTF-8" и я уверен твоя жизнь сразу же улучшится в полтора раза.