Есть консольная программа, которая, как и полагается, в stdin принимает команды, в stdout пишет ответ, а в случае возникновения ошибки посылает её текст в stderr. Программа под оффтопиком. Пишу на Python к ней морду, но уткнулся в то, что select() работает под виндой только с сокетами.
Что же делать?
PS: Прошу не предлагать сменить язык, я как раз на данном примере изучаю Python.
> а как ты отреагируешь на предложение сменить ось? да и версию питона на 3.0? вышел же final?
Ось сменить не получится, потому что пресловутая консольная программа - это шелл к специфичной железке, драйвер для которой есть только под винду. Ну а в Python 3.0 изменений по этой части я не нашел.
>>> По-моему, под виндой select в любом раскладе работает только с сокетами.
>> Этого не может быть. WaitForMultipleObjects работает даже с дисковыми файлами.
> А *select* под виндой работает только с сокетами.
Вызов вендовой libc select работает только с сокетами, возможно. Но речь о Питоне... но можно реализовать нормальный select (иоли даже poll), и кто-то наверняка это уже сделал.
И даже такой если реализации нет, можно дернуть через ctypes "родной" WaitForMultipleObjects.
>> Этого не может быть. WaitForMultipleObjects работает даже с дисковыми файлами.
> откуда такая осведомлённость :-?
Жизнь сложилась так, что пришлось поработать в нескольких ОС, и более менее теоретически изучить еще парочку %) Одной и парочки была NT. IIRC, даже файловые дескрипторы в NT могут быть в signaled state, на которое реагирует WFMO.
> может быть вы ещё и на виндузячие форумы захаживаете? под покровом ночи, пока никто не видит..
Раз в год на RSDN %) Но там обсуждают почти исключительно .Net, что не интересно вообще ни с какой стороны.
Местами есть баги. Если хочется посмотреть то тягайте из транка :). 3.0 это первый публичный релиз и народные массы много багов ловят. Я вот несколько багрепортов по документации уже запостил :). Хотя, на несложных скриптах проблем больше года уже нет.